搜索与mongoose中的每个数组ID匹配的所有文档

时间:2017-06-08 08:49:02

标签: arrays mongodb mongoose

我有一组名为senders的用户ID。

senders = [ '5934fd84d6ba4c241259bed1', '5938ecc505335007317bf1ce' ]

在我的MongoDB集合中,我有多个包含这些ID的文档。每个文档都有这种结构:

{
    "_id": {
        "$oid": "5938e247897daa05218bb33c"
    },
    "message": "Hi Sara!",
    "from": "Joe",
    "to": "Sara",
    "from_user_id": "5934fd84d6ba4c241259bed1",
    "to_user_id": "5934fe100b557624207db665",
    "created_at": {
        "$date": "2017-06-08T05:36:07.752Z"
    },
    "__v": 0
}

每个文档中的字段from_user_id与我的senders数组中的一个ID匹配。

如何遍历senders,找到相应的文档(假设有多个文档)?

以下是我尝试过的内容:

我可以使用一个ID执行此操作:

Message.find({ from_user_id: senders[0]}, (err, msg) => {console.log(msg)})

其中senders[0] = 5934fd84d6ba4c241259bed1

这导致找到两个与此用户ID匹配的文档:

[ { _id: 5938e247897daa05218bb33c,
    message: 'Hi Sara!',
    from: 'Joe',
    to: 'Sara',
    from_user_id: '5934fd84d6ba4c241259bed1',
    to_user_id: '5934fe100b557624207db665',
    created_at: 2017-06-08T05:36:07.752Z,
    __v: 0 },
  { _id: 5938e42c967cc106d8d207b9,
    message: 'Hi again.',
    from: 'Joe',
    to: 'Sara',
    from_user_id: '5934fd84d6ba4c241259bed1',
    to_user_id: '5934fe100b557624207db665',
    created_at: 2017-06-08T05:44:12.630Z,
    __v: 0 } ]

我首先尝试map() senders数组,然后执行.find(),如下所示:

var all_messages = []
senders.map((sender) => {
 Message.find({ from_user_id: sender}, (err, msg) => {
  all_messages.push(msg)
 })
})

但是生成的数组all_messages.map()之外不可用。当我使用senders.forEach()和常规for循环时,存在同样的问题。

0 个答案:

没有答案