【问题标题】:Find all records with field data type which is not NaN查找字段数据类型不是 NaN 的所有记录
【发布时间】:2015-08-24 21:38:08
【问题描述】:

我想找到与这个问题完全相反的how do I find all documents with a field that is NaN in MongoDB?

关键字$not需要一个文档,我用type成功了,猜测NaN会是double:

db.collection.find({'key2': {$not : {$type :1}}})

我设法找到的另一种方法是使用$nin

db.collection.find({'key1': NaN,  'key2' : { $nin : [NaN]}}})) 

有没有更好的方法?你能指出来吗?

【问题讨论】:

    标签: javascript mongodb mongodb-query


    【解决方案1】:

    您可以使用$ne 运算符查找字段不包含特定值的文档。在 shell 中使用 $neNaN 可以正常工作:

    db.collection.find({key1: {$ne: NaN}})
    

    【讨论】:

      【解决方案2】:

      首先,恭喜您对您的数据执行此操作。但这里的简单案例是构建一个表达式,该表达式也显示为 NaN(当然是在 JavaScript 中),并在您的查询过滤器中使用它。

      如:

      db.collection.find({'key1': parseInt("a"),  'key2' : { $nin : [parseInt("a")] } } )
      

      因为 parseInt()"Not a Number" 将产生常量结果,因此满足查询的匹配条件。

      在其他任何地方,NaN 将评估为“Double”或 BSON 类型 1,您需要其他逻辑来将该“类型”与其他可能的“Double”值区分开来。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-11
        • 2016-05-31
        • 1970-01-01
        • 1970-01-01
        • 2016-08-30
        • 2023-03-27
        • 2020-08-21
        相关资源
        最近更新 更多