【问题标题】:$or statement in $elemMatch$elemMatch 中的 $or 语句
【发布时间】:2014-07-06 18:35:36
【问题描述】:

有没有办法在元素匹配中执行 $or 语句?

我有这个:

opened: {
    $elemMatch: {
        closed: false
        openingEvening: {$lte: currentTime}, 
        closingEvening: {$gte: currentTime},
    }
}

并且想在 l 中添加 openingMorning

如何将其扩展为:

opened: {
    $elemMatch: {
        closed: false
        {$or: [
            {openingEvening: {$lte: currentTime}, closingEvening: {$gte: currentTime},},
            {openingMorning: {$lte: currentTime}, closingMorning: {$gte: currentTime}}
         ]
        }
    }
}

这样的事情可能吗?

【问题讨论】:

    标签: mongodb mongodb-query nosql


    【解决方案1】:

    是的,只是清理了语法,但你基本上已经掌握了:

    {
        "opened": {
            "$elemMatch": {
                "closed": false,
                "$or": [
                    {
                        "openingEvening": { "$lte": currentTime  },
                        "closingEvening": { "$gte": currentTime  }
                    },
                    {
                        "openingMorning": { "$lte": currentTime },
                        "closingMorning": { "$gte": currentTime  }
                    }
    
                ]
            }
        }
    }
    

    并给出数据的示例:

    {
        "_id" : ObjectId("537969cee90c3db84958aa86"),
        "opened" : [
                {
                        "closed" : false,
                        "openingEvening" : 17,
                        "closingEvening" : 22,
                        "openingMorning" : 11,
                        "closingMorning" : 14
                }
        ]
    }
    {
        "_id" : ObjectId("53796a47e90c3db84958aa87"),
        "opened" : [
                {
                        "closed" : false,
                        "openingMorning" : 13,
                        "closingMorning" : 14
                }
        ]
    }
    

    12 的当前时间将匹配第一个但不匹配第二个文档,但 13 的值将匹配两者。

    还要注意这些都在一个数组中,因此考虑到您的估计目的,您可能还希望在其中包含一个“dayOfWeek”字段

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多