查询与数组中列出的任何值匹配的任何文档的集合?



我目前有一个集合Raffle,其中每个文档包含raffle_iduser_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 }});

最新更新