我有一组名为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
循环时,存在同样的问题。