【问题标题】:Nested Mongodb Query needing multi seareshes需要多重搜索的嵌套 Mongodb 查询
【发布时间】:2020-01-13 11:37:20
【问题描述】:

您好,我是 mongodb 的新手,我必须编写一个查询来检查数据库中的每个字段是否有父级,如果是,请将 hasChild 字段更改为“true”,否则将其保留为 false 的默认值。 这是一个文档的示例。

    {
      "_id":"5e19ef611052250ba51abb7b",
      "name":"shampoo",
      "price":12.99,
      "hasChild":true
    }

   {
     "_id":"5e1b268d25fe046b3518dcb9",
     "name":"conditioner",
     "price":"13.99",
     "parent":"5e19ef611052250ba51abb7b",
     "hasChild":false
   }

我虽然可以在更新其他文档中的归档搜索时检查它们是否具有与当前文档 id 相同的父 id 并设置 true/false 的查询。但我找不到写它的方法。我会很感激任何想法。 注意“_id”和“parent”是ObjectId。

【问题讨论】:

标签: mongodb


【解决方案1】:

您可以使用聚合框架来做到这一点。

$addFields$cond 类似这样:

db.getCollection("yourcollection").aggregate(


    [

        {
            $addFields: {
                "hasChild": {
                     $cond: { if: { $eq: [ "$parent", undefined ] }, then: false, else: true }
                }
            }
        },

    ]



);

【讨论】:

  • 这非常天才,但结果只有子文档的“hasChild”变成了“真”。对此有什么想法吗?
  • 另一个问题是子文档也有一个子文档,这个聚合找不到那个。
  • 您能否向我展示您希望检索的收藏的输出样本?
猜你喜欢
  • 2021-12-19
  • 2015-06-29
  • 2015-02-20
  • 2016-01-13
  • 2021-08-02
  • 2021-09-01
  • 2015-09-24
  • 1970-01-01
  • 2021-06-20
相关资源
最近更新 更多