查找字段数据类型不是NaN的所有记录

时间:2015-08-24 13:09:52

标签: javascript mongodb mongodb-query

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

关键字$not需要一个文档,我在type上取得了成功。猜测NaN会是双重的:

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

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

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

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

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

首先,祝贺您对数据这样做。但这里的简单案例是构建一个表达式,该表达式也以NaN形式出现(当然在JavaScript中)并在查询过滤器中使用它。

如:

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

作为"而不是数字" parseInt()将产生常量结果,因此符合查询的匹配条件。

在其他任何地方,NaN都会评估为" Double"或BSON类型1,你需要其他逻辑来区分"类型"来自其他可能的" Double"值。