[英]How do I find all documents in mongodb collection that contain field/value pair?
[英]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
替換NaN
, mongoexport
將轉換為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.