Node.js Mongoose在存储的数组中查找数组项

Node.js Mongoose在存储的数组中查找数组项,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有一个文档,其中存储了引用不同集合的ID数组: { title: 'Title of the document', categories: [ { _id: 1 }, { _id: 2 }, { _id: 3 }, { _id: 4 }, ] } 现在,我希望能够找到所有文档,这些文档至少包含我传递到数组中的一个类别: categories: [1, 3, 4] 我已经搜索了stackoverflow和MongoDB文档,但没有找到如何实现这一点

我有一个文档,其中存储了引用不同集合的ID数组:

{
  title: 'Title of the document',
  categories: [
    { _id: 1 },
    { _id: 2 },
    { _id: 3 },
    { _id: 4 },
  ]
}
现在,我希望能够找到所有文档,这些文档至少包含我传递到数组中的一个类别:

categories: [1, 3, 4]

我已经搜索了stackoverflow和MongoDB文档,但没有找到如何实现这一点。

我认为$in操作符正是您要寻找的。它选择字段值等于指定数组中任何值的文档。Mongo文档有一个有用的页面,其中包含一个用于查询数组中的值的函数

您还需要使用点表示法来查询categories数组的_id字段。这些文档还有一个用于查询嵌入文档数组的函数,这就是您在这里所做的(您正在查询类别文档数组)

对于您的情况,您的查询对象应该是

{ 'categories._id' : { $in: [1, 3, 4] } }

另一种方法是:db.collection.find({categories:{$elemMatch:{{u id:{$in:[1,2,3]}}})-如果您还想在查询中引入比较运算符,那么它非常有用。。。