MongoDB查询每个文档的特定字段?

时间:2014-08-19 16:26:03

标签: mongodb

假设我的用户集中有2个用户:

id: "1",
outer: {
    field1: {
        inner1: {
            a: cats
            b: car
        }
    }
}

id: "2",
outer: {
    field1: {
        inner1: {
            a: dogs
            b: bus
        }
    }
}

假设我有10个用户。我想为我的数据库中的每个用户获取字段“a”的值。如何进行此查询(在mongo shell中)?

2 个答案:

答案 0 :(得分:0)

db.user.find({'field1.a': { $exists: true }, { 'field1.a': 1 });

修改:如评论中所述,您也可以使用聚合框架执行project

db.user.aggregate({ $project: { a: '$field1.inner1.a' } });

答案 1 :(得分:0)

对象的嵌套方式并不重要,只需使用dot notation即可。我在下面写了一个例子。你的文件不完整,形式各异,形式多种多样,所以我尽量完成它们,同时试图匹配我认为你的意思。

> db.nested.insert([
{
    "_id" : "1",
    "outer" : {
        "field1" : {
            "inner1" : {
                "a" : "cats",
                "b" : "car"
            }
        }
    }
},
{
    "_id" : "2",
    "outer" : {
        "field1" : {
            "inner1" : {
                "a" : "dogs",
                "b" : "bus"
            }
        }
    }
}])
> db.nested.find({}, { "_id" : 0, "outer.field1.inner1.a" : 1 })
{ "outer" : { "field1" : { "inner1" : { "a" : "cats" } } } }
{ "outer" : { "field1" : { "inner1" : { "a" : "dogs" } } } }

选择文档字段的子集称为projection