【问题标题】:Query an array of users based on an array of users根据用户数组查询用户数组
【发布时间】:2017-08-30 22:56:38
【问题描述】:

基本上我无法理解如何解决这个问题。

我在 mongodb 集合中有一个文档,该文档有一个名为 friends 的字段,它是一个用户名数组。

我想通过数组friends 中的每个用户名进行查询,并拥有这些用户文档的数组。我很难解释,也许如果我把它画出来就会有意义。

mongodb 文档:

{
    "_id": {
        "$oid": "59a20e65f94cb5e924af774e"
    },
    "name": "Nick",
    "friends": ["Jones","Mark","Mike"]
}

现在有了这个朋友数组,我想在同一个集合中搜索具有“名称”Jones、Mark 和 Mike 的对象。当我找到那个对象时,我想把它放入一个数组中。

基本上我希望它返回这个,(对于这个例子,假设琼斯、马克和迈克只有一个朋友,那个朋友是尼克。

[{
    "_id": {
        "$oid": "59a20e65f94cb5e924af774e"
    },
    "name": "Jones",
    "friends": ["Nick"]
},
{
    "_id": {
        "$oid": "59a20e65f94cb5e924af774e"
    },
    "name": "Mark",
    "friends": ["Nick"]
},
{
    "_id": {
        "$oid": "59a20e65f94cb5e924af774e"
    },
    "name": "Mike",
    "friends": ["Nick"]
}]

^ 三个对象的数组,它们都是 Nick 的朋友。

如果您需要更多解释,请告诉我,我不擅长这种类型的东西。

为了记录,我使用的是节点和基本的 mongodb(不是 mongoose)。

【问题讨论】:

    标签: arrays node.js mongodb


    【解决方案1】:

    我相信您正在寻找$in 运算符。

    // doc.friends = ["Jones","Mark","Mike"]
    
    db.collection.find({ name: { $in: doc.friends }})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-04
      • 2013-08-31
      • 1970-01-01
      • 2017-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多