【问题标题】:MongoDB : Match with element in an arrayMongoDB:与数组中的元素匹配
【发布时间】:2020-07-02 14:10:53
【问题描述】:

我正在开发一个名为 Publications 的集合。每个出版物都有一系列目标,它们是 id。我还有一个自定义的手写目标数组。现在,我想选择在其目标中包含至少一个自定义目标数组元素的所有出版物。我该怎么做?

我一直在尝试使其与 '$setIntersection' 然后 '$count' 一起工作,并验证计数是否大于 0,但我不知道如何实现。

例子:

publication_1: {
     '_id': ObjectId("sdfsdf46543")
     'objectives': [ObjectId("1654351456341"), ObjectId("123456789")]
}

publication_2: {
     '_id': ObjectId("sdfs216546543")
     'objectives': [ObjectId("1654351456341"), ObjectId("46531132")]
}

custom_array = [ObjectId("123456789"), ObjectId("2416315463")]

mongo 查询应该返回publication_1。

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    您可以执行以下操作:

    db.publications.find({
      "objectives": {
        "$in": [
          ObjectId("123456789"),
          ObjectId("2416315463")
        ]
      }
    })
    

    注意:“123456789”不是有效的 ObjectId,因此查询本身可能不起作用。这是工作示例

    Mongodb 游乐场链接:https://mongoplayground.net/p/MbZK99Pd5YR

    【讨论】:

      【解决方案2】:

      objectives 是一个对象数组,我猜你可以直接查询那个字段:

      let custom_array = [ObjectId("123456789"), ObjectId("2416315463")];
      // You can search the array with $in property. 
      let result = await Model.find({ objectives: {$in : custom_array} })
      

      【讨论】:

        猜你喜欢
        • 2015-06-21
        • 1970-01-01
        • 2016-03-26
        • 1970-01-01
        • 2021-04-16
        • 2011-03-11
        • 2016-02-17
        • 2021-05-06
        相关资源
        最近更新 更多