使用where子句查找不同的子文档

时间:2016-12-07 18:34:04

标签: mongodb

鉴于以下架构,我试图找到条件的所有不同子文档(项目)。

{
   "basket": "one",
   "color":"brown",
   "items": [
        {
            "id":123,
            "name": "apple"
        },
        {
            "id":234,
            "name": "banana"
        },
    ]
}, 
{
   "basket": "2",
   "color":"brown",
   "items": [
        {
            "id":345,
            "name": "orange"
        },
        { 
            "id":123,
            "name": "apple"
        },
    ]
},
{
   "basket": "3",
   "color":"blue",
   "items": [
        {
            "id":345,
            "name": "orange"
        },
        { 
            "id":456,
            "name": "pineapple"
        },
    ]
}

在mongodb中是否有办法获得篮子颜色为"棕色"?的所有不同物品

理想情况下,结果应为:

    {
        "id":123,
        "name": "apple"
    },
    {
        "id":234,
        "name": "banana"
    },
    { 
        "id":345,
        "name":"orange"
    }

2 个答案:

答案 0 :(得分:2)

官方文件: https://docs.mongodb.com/v3.2/reference/method/db.collection.distinct/#db.collection.distinct

db.collection.distinct(field,query)

其中:

field - 要返回不同值的字段(字符串)。

query - 一个查询,指定从中检索不同值(文档)的文档。

所以在你的情况下:

db.collection.distinct("items",{"color":"brown"})

答案 1 :(得分:1)

之后你可以运行以下 -

如果是“item”子文档

db.Collection_Name.distinct("items",{"color": "brown"})