【问题标题】:Mongoose compare with a third level nested field valueMongoose 与第三级嵌套字段值进行比较
【发布时间】:2019-07-03 16:57:11
【问题描述】:

我有以下收藏:

我想从 collection1 一直到 collection 3 和 4 进行查找,以便在一个查询中比较名称。

示例:

collection1.find({
    collection2.collection3.name: req.body.name3,
    collection2.collection4.name: req.body.name4
}).exec()

【问题讨论】:

    标签: node.js mongodb mongoose mongoose-schema mongoose-populate


    【解决方案1】:

    您可以使用 mongodb 聚合框架的 $lookup$graphlookup 阶段进行多集合查询。用于聚合的 Mongoose 文档https://mongoosejs.com/docs/api.html#Aggregate 您不能对多集合查找执行简单的查找查询。

    【讨论】:

      【解决方案2】:

      您需要使用 lookupunwindma​​tch,这是您问题的未经测试的解决方案

       Model.aggregate([
           {
               $match: {
                   _id: req.params.id
                   // for object id use
                   // _id: mongoose.Types.ObjectId(req.params.id)
               }
           },
              {
                $lookup: {
                  from: "collection2",
                  localField: "collection2",
                  foreignField: "_id",
                  as: "Collection2"
                }
              },
              {
                  $unwind: "$ColelctionTwo"
              },
              {
                $lookup: {
                  from: "collection3",
                  localField: "CollectionTwo.collection3",
                  foreignField: "_id",
                  as: "Collection3"
                }
              },
              {
                $lookup: {
                  from: "collection4",
                  localField: "CollectionTwo.collection4",
                  foreignField: "_id",
                  as: "Collection4"
                }
              }
            ]).exec(function(err, result) {
                if(err) {
                    // handle here
                }
                if(result) {
                    // do something here...
                }
            }
      

      【讨论】:

        猜你喜欢
        • 2021-05-22
        • 2023-03-17
        • 1970-01-01
        • 2019-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多