如何连接该mongodb集合中的所有成员ID?

Posted

技术标签:

【中文标题】如何连接该mongodb集合中的所有成员ID?【英文标题】:how to concate all the members id from that mongodb collection? 【发布时间】:2021-08-04 17:22:28 【问题描述】:

我在 mongoDb 数据库上有一个名为 group 的集合。该集合包含 2 个或更多对象,每个对象包含一个名为 members 的数组。从数据库中连接和获取所有成员数据的最佳可能和最有效的方法是什么。 mongoDB 查询是什么?

我的收藏看起来像

[

    
        id: ObjcetId("15215252"),
        groupName: "travellers of Bangladesh",
        members: ["1","2","3"]
    ,
    
        id: ObjcetId("32643724362"),
        groupName: "People from Bangladesh",
        members: ["4","5","6"]
    
]

我只想要这些确切的数据

members: ["1","2","3","4","5","6"]

【问题讨论】:

【参考方案1】:

使用可以使用聚合

$unwind 解构数组 $group重构数组

这里是代码

db.collection.aggregate([
   $unwind: "$members" ,
  
    $group: 
      _id: null,
      members:  $push: "$members" 
    
  
])

工作Mongo playground

【讨论】:

我以前尝试过这种确切的方式,当我从邮递员运行它时,我得到这个 Json 数据作为回报 [ "_id": null, "members": [ "609bed37f7b8067ea24d1d51", "609bed37f7b8067ea24d1d58", "609bed37f7b8067ea24d1d56", "609bed37f7b8067ea24d1d51", "609bed37f7b8067ea24d1d58", "609bed37f7b8067ea24d1d56" ] ] 所以有没有办法在没有数组内部的对象的情况下返回精确的数组? 您将收到键:值对。您可以做的是,您可以分配给变量 var data=getMambers(); console.log(data.members) 。如果您还需要发送任何其他数据,这将是一个很好的做法,您可以轻松获取

以上是关于如何连接该mongodb集合中的所有成员ID?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 MongoDB 集合中的所有文档选择单个字段?

使用 mongoDB 中的聚合删除集合中所有文档的特定字段

MongoDB:如何在 100 个集合中找到 10 个随机文档?

MongoDB:如何在 100 个集合中找到 10 个随机文档?

通过键字段查找 MongoDB 集合中的所有重复文档

MongoDb 模拟 2 个集合之间的连接