Mongodb搜索数据除范围外

时间:2017-11-16 15:53:46

标签: mongodb mongoose

我有一个集合,这里是文档。每个文档都有自己唯一的编号,增加了:

{
    code: 1
}, {
    code: 2
}, {
    code: 3
}, {
    code: 4
}, {
    code: 5
}, {
    code: 6
}, {
    code: 7
}, {
    code: 8
}, {
    code: 9
}, {
    code: 10
}

现在我需要做的是,只获取不在(2,5)和(7,9)范围内的文件?

结果必须是:

{
    code: 1
}, {
    code: 6
}, {
    code: 10
}

所以,我想在大集合上做这个,例如有3000个文档的集合,“除了范围”将是4-5。

我尝试了一些查询,但它无法正常运行:

{ "course": ObjectId("123"), "code": { $gt: NumberInt(300) }, "code": { $lt: NumberInt(400) }, "code": { $gt: NumberInt(500) }, "code": { $lt: NumberInt(800) } }

1 个答案:

答案 0 :(得分:1)

第一个解决方案是使用$nor运算符:

{
    $nor: [
        {"code": {$gte: 2, $lte: 5}},
        {"code": {$gte: 7, $lte: 9}}
    ]
}

第二种解决方案是使用$or运算符:

{
    $or: [
        {"code": {$lt: 2}},
        {"code": {$gt: 5, $lt: 7}},
        {"code": {$gt: 9}}
    ]
}