Mongo - 找到多个

时间:2015-08-12 14:12:36

标签: mongodb mongodb-query nosql

在我的mongo集合中提供此数据

product_id | original_id | text
1 | "A00149" | "1280 x 1024"
1 | "A00373" | "Black"
2 | "A00149" | "1280 x 1024"
2 | "A00373" | "White"
3 | "A00149" | "1980 x 1200"
3 | "A00373" | "Black"

(我在手中的值附近添加了引号 - 这些不在真实的集合中)

使用以下查询,我得到0结果,虽然我期待1。

product_id = 1应符合查询。

有人可以解释我做错了吗?

在SQL中,这将是这样的

WHERE
    (original_id = "A00149" AND text = "1280 x 1024")
    AND 
    (original_id = "A00373" AND text = "Black")

和mongo查询

db.Filter.find({
   "find":true,
   "query":{
      "$and":[
         {
            "original_id":"A00149",
            "text":"1280 x 1024"
         },
         {
            "original_id":"A00373",
            "text":"Black"
         }
      ]
   },
   "fields":{
      "product_id":1
   }
});

1 个答案:

答案 0 :(得分:0)

如果您的收藏品被调用'过滤'并且您希望查询返回带有product_id = 1的文档,然后简单:

db.Filter.find({"product_id" : 1})

我可能会误解你的问题吗?

编辑:

尝试:

db.Filter.find({$and: [{"original_id": "A00149", "text": "1280 x 1024"}, {"original_id": "A00373", "text": "Black"}]},{"product_id": 1})

请参阅http://docs.mongodb.org/manual/reference/operator/query/and/#op._S_and