假设我的用户集中有2个用户:
id: "1",
outer: {
field1: {
inner1: {
a: cats
b: car
}
}
}
id: "2",
outer: {
field1: {
inner1: {
a: dogs
b: bus
}
}
}
假设我有10个用户。我想为我的数据库中的每个用户获取字段“a”的值。如何进行此查询(在mongo shell中)?
答案 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。