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

Find all records with field data type which is not NaN

本文关键字:记录 NaN 字段 数据类型 查找      更新时间:2023-09-26

我想找到与这个问题完全相反的问题,我如何找到MongoDB中具有NaN字段的所有文档?

关键字$not需要一个文档,并且我成功地使用了type,猜测NaN将是双精度:

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

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

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

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

您可以使用$ne操作符查找字段不包含特定值的文档。在shell中使用$neNaN工作得很好:

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

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

:

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

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

在其他地方,NaN将被计算为"Double"或BSON类型1,您将需要其他逻辑来区分该"类型"与其他可能的"Double"值。