如果我有这样的mongodb集合users
:
{
"_id": 1,
"name": {
"first" : "John",
"last" :"Backus"
},
}
如何在不提供name.first
或任何其他参考的情况下从中检索_id
。另外,是否可以只拉动`name ^可以给我嵌入键的数组(在这种情况下是第一个也是最后一个)?怎么办?
db.users.find({"name.first"})
对我不起作用,我得到了:
SyntaxError“missing:属性id(shell):1
答案 0 :(得分:18)
find()
的第一个参数是查询条件,而find()
方法的第二个参数是投影,它采用文档的形式,其中包含要包含或排除的字段列表结果集。您可以指定要包含的字段(例如{ field: 1 }
),也可以指定要排除的字段(例如{ field: 0 }
)。除非明确排除,否则隐式包含_id
字段。
在您的情况下,db.users.find({name.first})将给出错误,因为它应该是搜索条件。
获取名称json:
db.users.find({},{name:1
})
如果您只想获取name.first
db.users.find({},{"name.first":1})
Mongodb文档链接here
答案 1 :(得分:0)
获取所有记录详细信息: db.users.find({ “name.first”: “”}) 要仅获取名称或特定字段: db.users.find({{}, “name.X”: “”}); 其中X可以是第一个,也就是最后一个。
如果需要遍历数组内的键值对,可以使用点(。)表示法 db.users.find({ “name.first._id”: “XYZ”});