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



如果我有一个像这样的mongodb集合users

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

如何在不提供_id或任何其他参考的情况下从中检索name.first。另外,是否有可能只拉 'name^ 就可以给我嵌入式键数组(在这种情况下是第一个和最后一个)?怎么能做到这一点呢?

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

语法错误"缺失:在属性 ID (外壳):1 之后

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文档链接在这里

要获取所有记录详细信息,请执行以下操作: db.users.find({"name.first":"})要仅获取名称或特定字段,请执行以下操作:db.users.find({{},"name.X":""});其中 X 可以是第一个,最后一个。

如果需要在数组内部遍历键值对,可以使用 dot(.) 表示法作为db.users.find({"name.first._id":"xyz"});

2022年

const cursor = db
  .collection('inventory')
  .find({
    status: 'A'
  })
  .project({ item: 1, status: 1 });

来源: https://www.mongodb.com/docs/manual/tutorial/project-fields-from-query-results/

最新更新