MongoDB:与查询不匹配的嵌入式文档

时间:2013-11-29 00:22:35

标签: mongodb filter

我正在开发一个Mongo数据库,我需要用户能够指定不可用的日期。我从这个结构开始:

{
    "_id": "demo-spe",
    "SC": [ { "SS": 14, "SA": [ 2, 3, 5 ] } ],
    "SU": [
        { "IY": 2013, "IM": 12, "ID": 30, "H0": 0, "N0": 0, "H1": 23, "N1": 59 },
        { "IY": 2013, "IM": 12, "ID": 31, "H0": 0, "N0": 0, "H1": 23, "N1": 59 }
    ]
}

使用此结构,如果我想知道哪个用户在某个特定日期可用,也就是说,"SU"数组不应该包含与IY:(year)匹配的文档,IM:(month)ID:(day)。我真的迷失了$and$nin,有人可以引导我吗? 谢谢,抱歉noob问题和非描述性字段! :)

1 个答案:

答案 0 :(得分:0)

您可以使用$elemMatch$not的组合来执行此操作。 $elemMatch匹配同一数组元素中的多个字段,$not对表达式执行逻辑NOT:

db.test.find({SU: {$not: {$elemMatch: {IY:2013, IM:12, ID:29}}}})