簡體   English   中英

如何在MongoDB中找到包含NaN字段的所有文檔?

[英]how do I find all documents with a field that is NaN in MongoDB?

我想刪除所有NaN的geospacial字段,以便我可以正確索引我的MongoDB。

我怎么找到所有這些文件呢?

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

由於NaN的類型為Number,因此無法工作。

db.collection.find( { field: NaN })

實際上工作,雖然我找不到任何文件

PyMongo的解決方案:

# If you're alright with numpy as a dependency
import numpy as np
db.collection.find({ 'field': np.nan })

要么

db.collection.find({ 'field': float('nan') })

僅供參考:我遇到過這個問題,因為mongoexport (mongo 3.0.7)將NaN寫入了它創建的JSON文件中。 這似乎已在3.3.5中得到解決

所以再次使用PyMongo並在類似的船中,你可以用Python的None替換NaNmongoexport將轉換為JSON有效的null

import numpy as np
for doc in list(db.collection.find({ 'field': np.nan }))
    update_one({'_id': ObjectId(doc['_id'])},
               {'$set': {'field': (lambda x: None if np.isnan(x) else x)(doc['field'])}})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM