我目前有一个集合Raffle
,其中每个文档包含raffle_id
和user_id
。此集合用于包含用户购买的奖券,因此每个用户可以为许多不同的奖券购买多张奖券。我查询了这个集合,以返回所有与我传入的特定id匹配的raffle_id
,因此,如果我有10个不同的抽奖活动,并且假设我只查询属于"赢得一条全新项链"的门票;抽奖时,我只会收到这些各自的参赛作品(不属于"赢得一辆全新的汽车"的门票)。该数组包含用户的id。
例句:
myArr[0] = "104abc191";
myArr[1] = "134gkd131";
...
myArr[n] = "404fdc259";
由于该数组包含了输入特定抽奖的不同用户,因此它的大小可以非常大,也可以非常小,或者介于两者之间。
由于我只有一个表示用户id的字符串数组,因此我希望能够根据这些id查询User
集合,以查找有关用户(电子邮件,电话等)的其他信息。我怎么查询任何匹配的文档集合id的数组?
我想做一些类似的事情:
User.find({ $or: [{ "id": myArr[0] }, { "id": myArr[1] }, ..., { "id": myArr[n] });
我不确定是否可以在$or
数组中包含2个以上的条件(我假设是),但是这似乎不是很实际,因为我的搜索条件可能非常大,这取决于有多少不同的用户进入了这个特定的抽奖。
我是否能够按照"如果集合包含任何具有与给定数组中任何值匹配的id
的文档,将它们添加到要返回的数组中"这样的行来查询集合?
$in
(https://docs.mongodb.com/manual/reference/operator/query/in/)
User.find({ id: { $in: myArr }});