【问题标题】:query to get all _id in array in mongdb?查询以获取 MongoDB 中数组中的所有 _id?
【发布时间】:2018-09-21 06:50:14
【问题描述】:

我有以下收藏

{
    "_id" : ObjectId("5acdb95d5ea63a27c1facf92"),
    "venue" : ObjectId("5acdb95d5ea63a27c1facf8c"),
    "author" : ObjectId("5ac8ba3582c2345af70d4658"),
}
{
    "_id" : ObjectId("5acdb95d5ea63a27c1facf93"),
    "venue" : ObjectId("5acdb95d5ea63a27c1facf8c"),
    "author" : ObjectId("5ac8ba3582c2345af70d4658"),
}
{
    "_id" : ObjectId("5acdb95d5ea63a27c1facf91"),
    "venue" : ObjectId("5acdb95d5ea63a27c1facf8c"),
    "author" : ObjectId("5ac8ba3582c2345af70d4658"),
}

如何获取具有相同场地的数组中的所有_id

我的输出应该是这样的

{array: ['5acdb95d5ea63a27c1facf91', '5acdb95d5ea63a27c1facf91', '5acdb95d5ea63a27c1facf93']}

【问题讨论】:

  • 您想要针对特定​​场地还是按场地分组?
  • @Cristy 用于特定场地
  • 看看这个aggregation: $push
  • @felix 你真棒

标签: node.js mongodb mongoose mongodb-query aggregation-framework


【解决方案1】:

试试这个查询:

db.colelction.aggregate([
  {$match:{"venue" : ObjectId("5acdb95d5ea63a27c1facf8c")}},
  {$group:{_id:null, array:{$push:"$_id"}}},
  {$project:{_id:0}}
])

输出是:

/* 1 */
{
   "array" : [ 
       ObjectId("5acdb95d5ea63a27c1facf92"), 
       ObjectId("5acdb95d5ea63a27c1facf93"), 
       ObjectId("5acdb95d5ea63a27c1facf91")
   ]
}

【讨论】:

  • 嗨,mongodb查询有什么游乐场吗?
  • @AshishChoudhary 你的问题是什么?
  • 我上面评论的问题是 SOF 问题之外的问题
  • 我明白了,playground 是什么意思?你的意思是除了 mongo shell 之外的第三方工具?
  • @AshishChoudhary 你可以看看mongoplayground! (披露:我是作者)
【解决方案2】:
db.collection.aggregate(

  // Pipeline
  [
    // Stage 1
    {
      $group: {
         _id:{venue:'$venue'},
         _ids:{$addToSet:'$_id'}
      }
    },

    // Stage 2
    {
      $project: {
      _ids:1,
      _id:0
      }
    }

  ]


);

【讨论】:

  • 虽然这个代码块可能会回答这个问题,但最好能稍微解释一下为什么会这样。
猜你喜欢
  • 2021-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-23
  • 2020-08-22
  • 2020-10-08
  • 2014-12-13
相关资源
最近更新 更多