首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >等价于维护数组顺序的数组中的`.populate`的ObjectIds

等价于维护数组顺序的数组中的`.populate`的ObjectIds
EN

Stack Overflow用户
提问于 2022-08-01 05:55:32
回答 1查看 35关注 0票数 1

什么是MongoDB聚合,相当于数组上的Mongoose的.populate?具体来说,我想知道是否会有这样的情况:( a)执行$lookup的功能,但( b)仍然对返回的对象保持数组顺序。

也就是说,在[ ObjectId(b), ObjectId(a), ObjectId(c) ]中查找项应该以相同的[ ItemB, ItemA, ItemC ]顺序返回数组,而不是 [ItemA, ItemB, ItemC]或任何其他排列。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-01 08:39:28

一种选择是使用常规的$lookup,然后排序结果:

代码语言:javascript
运行
复制
db.colA.aggregate([
  {$lookup: {
    from: "colB",
    localField: "data",
    foreignField: "_id",
    as: "newData"
  }},
  {$set: {
    newData: "$$REMOVE",
    data: {
      $map: {
        input: "$data",
        in: {$arrayElemAt: ["$newData", {$indexOfArray: ["$newData._id", "$$this"]}]}
        }
      }
    }
  }
])

看看它如何在操场实例上工作

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73189324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档