【问题标题】:Accessing embedded documents of mongodb using JSON使用 JSON 访问 mongodb 的嵌入文档
【发布时间】:2016-09-14 01:44:10
【问题描述】:

问题是:我可以在返回外部文档后使用 JSON 选择器访问 mongodb 中文档的嵌入文档吗?让我用一个例子来解释这个问题:

假设 Comments 有一个嵌入文档 Users。现在首先我使用代码返回 Comments 文档:

var comments = db.Comments.find();

然后我使用 JSON 语法返回嵌入的文档,因为 mongodb 使用 JSON 对象来存储文档(目前我了解/知道):

var users = comments['Users'];

我知道不可能在 mongodb 中返回嵌入式文档,访问用户的方法是制作单独的用户文档。但是,出于好奇,我只是想问一下这种逻辑是否可行,因为它对我使用 mongodb 编写 node.js 有很大帮助。

希望大家理解这个问题。

注意:这个例子只是虚构的,所以请不要评论这个例子是对还是错,基本目的只是为了让我的问题容易理解。

【问题讨论】:

    标签: json node.js mongodb mongodb-query


    【解决方案1】:

    假设评论的结构:

      {
        _id,
        Users: [
          {
            name
          }
        ]
      }
    

    你可以通过聚合做你想做的事:

      db.Comments.aggregate([
        {$unwind:{path:'$Users'}},
        {$project:{'name':'$Users.name', _id: 0}}
      ])
    

    【讨论】:

    • 这也给出了所需的结果。但是,实际上我想知道我的方法是否正确。
    • 另外,投影时_id=0会起到什么作用?
    • 如果使用var comments = db.Comments.find();,cmets是评论数组,所以可以通过cmets[0]['Users']访问第一个cmets的用户
    • 默认情况下_id会被返回,即使你不通过_id: 1投影它,所以如果你不需要_id作为返回对象,你必须通过_id: 0告诉mongodb。
    猜你喜欢
    • 2018-07-30
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多