【问题标题】:How to read a specific key-value pair from mongodb collection如何从 mongodb 集合中读取特定的键值对
【发布时间】:2023-04-10 12:43:02
【问题描述】:

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

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

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

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

SyntaxError "missing: after property id (shell):1

【问题讨论】:

    标签: mongodb mongodb-query


    【解决方案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 文档链接here

    【讨论】:

    • 至少在 mongo shell 中使用它时,我需要在 "name.first" 周围加上引号,以防我只需要获取 name.first
    【解决方案2】:

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

    如果需要在数组内部遍历键值对,则可以使用

    dot(.) 表示法 db.users.find({"name.first._id":"xyz"});

    【讨论】:

      【解决方案3】:

      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/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-14
        • 2016-06-23
        • 2014-05-16
        • 2021-07-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多