6

時々私のドキュメントはnull値を持つフィールドを持っています。

  • フィールド内の値がnull文字列であるかどうかを確認するにはどうすればよいですか?
  • すべてのドキュメントを反復処理し、ドキュメントのフィールドにnull文字列値がある場合は、そのフィールドを削除するにはどうすればよいですか?
  • このドキュメントのこのフィールドを削除して、空のフィールドを見つけることができるようにする必要がありますか? for i in v7.find({"eng":{"$exist":True}})

私のドキュメント構造の例は次のとおりです。

{ "_id" : ObjectId("50fd55c1161747668078fed6"), 
"dan" : "Hr. Hänsch repræsenterede Dem dér .", 
"deu" : "Der Kollege Hänsch hat Sie dort vertreten .", 
"eng" : "Mr Hänsch represented you on this occasion .", 
"fin" : "Kollega Hänsch edusti teitä siellä .", 
"ita" : "Il collega Hänsch è intervenuto in sua vece .", 
"md5" : "336b9cd1dc01ae0ff3344072d8db0295", 
"uid" : 2100986 }

{u'uid': 104, 
u'fre': u"Je crois que la pr\xe9vention est d' une importance capitale , et ce non pas \xe0 cause des criminels \xe0 la t\xeate du pouvoir .", 
u'eng': u'', 
u'dan': u'Som hr .', 
u'deu': u'.', 
u'ita': u"L' emendamento n .", 
u'nld': u'Dat gebied is de Balkan van de toekomst , een Balkan op wereldschaal .', 
u'spa': u'\xa1 Y no por los criminales que se hallan al frente de las instituciones !', 
u'_id': ObjectId('50fd381f161747668058f043'), 
u'fin': 
u'.', u'md5': u'd41d8cd98f00b204e9800998ecf8427e'}
4

1 に答える 1

6

mongodbのマニュアルによると、次のクエリでこれを実現できます。

db.test.find( { eng : { $type: 10 } } )

クエリは、null値を含むドキュメントのみを返します。

{フィールド:{$ type:10}}クエリは、値がnullのみのフィールドを含むドキュメントに一致します。つまり、フィールドの値はBSONタイプNull(つまり、10)です。

http://docs.mongodb.org/manual/faq/developers/#faq-developers-query-for-nulls

于 2013-01-31T08:00:44.847 に答える