如何从mongodb集合中读取特定的键值对

时间:2012-12-18 06:11:14

标签: mongodb mongodb-query

如果我有这样的mongodb集合users

{
  "_id": 1,
  "name": {
    "first" : "John",
    "last" :"Backus"
  },
}

如何在不提供name.first或任何其他参考的情况下从中检索_id。另外,是否可以只拉动`name ^可以给我嵌入键的数组(在这种情况下是第一个也是最后一个)?怎么办?

db.users.find({"name.first"})对我不起作用,我得到了:

  

SyntaxError“missing:属性id(shell):1

2 个答案:

答案 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”});