【问题标题】:Mongoose find array item in stored arrayMongoose 在存储的数组中查找数组项
【发布时间】:2019-05-23 13:05:35
【问题描述】:

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

{
  title: 'Title of the document',
  categories: [
    { _id: 1 },
    { _id: 2 },
    { _id: 3 },
    { _id: 4 },
  ]
}

现在我希望能够找到至少具有我传递到数组中的一个类别的所有文档:

categories: [1, 3, 4]

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

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

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

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

    对于您的情况,您的查询对象可能应该类似于

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

    【讨论】:

    • 另一种方法是:db.collection.find({ categories: { $elemMatch: { _id: { $in: [1, 2, 3] } } } }) - 如果您还想在查询中引入比较运算符...
    猜你喜欢
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    • 2021-07-08
    • 2017-11-22
    • 1970-01-01
    • 2012-09-09
    • 2014-05-21
    • 1970-01-01
    相关资源
    最近更新 更多