查询以找到所有非零毫秒的文档

时间:2018-08-05 14:24:12

标签: mongodb mongoose mongodb-query aggregation-framework

一大堆transaction文档(〜2M)

每个transaction文档都有一个source.billDate字段:

"source.billDate" : ISODate("2018-07-23T16:02:06.797Z")
// or //
"source.billDate" : ISODate("2018-07-22T14:21:56.000Z")

您会看到有些日期以毫秒为单位,有些则没有毫秒。

我想知道是否有一种方法可以使用MongoDB查询来查找transaction日期中具有毫秒数的billDate文档。

有可能吗?

1 个答案:

答案 0 :(得分:4)

您可以在mongodb 3.6 版本中尝试以下查询

您必须先使用$dateToPartsdate中提取毫秒,然后才能轻松匹配具有毫秒$ne 0的文档

db.collection.aggregate([
  { "$match": {
    "$expr": {
      "$ne": [
        { "$millisecond": {
          "date": "$source.billDate",
          "timezone": "America/New_York"
        }},
        0
      ]
    }
  }}
])

或者也可以使用查找查询

db.collection.find({
  "$expr": {
    "$ne": [
      { "$millisecond": {
        "date": "$source.billDate",
        "timezone": "America/New_York"
      }},
      0
    ]
  }
})