如何将MongoDB数组中的值与另一个数组进行匹配

3

用户文档

这是我的mongodb中的一个用户文档,还有许多其他用户文档。并且有一个像这样的兴趣数组

myInterests['gaming','reading']

这个数组在未来可能是动态的

我想编写一个查询,以便获取那些拥有这两个兴趣或至少其中一个兴趣的用户列表,我该如何编写查询?

router.get("/", auth, async function (req, res) {
  const { interests: myInterests } = req.user;
  const users = await User.find({
    interests: { $in: [myInterests] },
  }).select({ email: 1, interests: 1 });
  console.log(users);
});

我尝试了这段代码,但是这段代码只会给我那些拥有这两个兴趣爱好的用户列表。我想要获取那些至少拥有这个数组中任意一个元素的用户。
1个回答

0

myInterests已经是一个数组。查询应该像这样

interests: {
      $in: myInterests,
    }

替代

interests: {
      $in: [myInterests],
    }

否则,它会使用2D数组查找精确匹配项。
工作示例 =》 https://mongoplayground.net/p/D2_JwvBUn3k

@Saad8113,看这个!! - Amila Senadheera

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接