【问题标题】:check if a field value exit in array - MongoDB检查数组中是否存在字段值 - MongoDB
【发布时间】:2019-08-02 00:37:27
【问题描述】:

我正在使用 MongoDB,并且我有以下人员集合架构:

Person {
    age: [number]
}

我想检查一个人的年龄是否存在于数组中,例如 [15, 20, 12, 0]。我需要类似 $in 运算符但相反的东西。

架构:

initiatives : {
    ressources: [
        { departement: ObjectId }
        { departement: ObjectId }
    ]
)

【问题讨论】:

标签: mongodb mongoose nosql


【解决方案1】:

您可以将$expr$in 一起使用:

Person.find({ $expr: { $in: [ "$age", [15, 20, 12, 0] ] } })

编辑:要比较您需要 $setIntersection$size 运算符的数组,请尝试:

Person.find({
    $expr: {
        $gt: [
            {
                $size: {
                    $setIntersection: [
                        [
                        "15",
                        "a",
                        "12",
                        "0"
                        ],
                        "$age.x"
                    ]
                }
            },
            0
        ]
    }
})

【讨论】:

  • SyntaxError: 标识符在数字文字之后立即开始
  • @Ayoubk 我没有看到你的代码,但这就是我的意思:mongoplayground.net/p/vWTttH-dDXA
  • 是的,它适用于您的示例。无论如何我有以下查询db.initiatives.find({ $expr: { $in: [ "$ressources.function", [5c3da236248330595ab337db] ] } })
  • "5c3da236248330595ab337db"ObjectId("5c3da236248330595ab337db") 包裹5c3da236248330595ab337db
  • db.initiatives.find({ $expr: { $in: [ "$ressources.function", [ObjectId('5c3da236248330595ab337db')] ] } })
猜你喜欢
  • 2016-09-09
  • 2016-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-20
相关资源
最近更新 更多