1

ドキュメントを読んで全体を検索しましたが、その方法がわかりません。コレクション内にドキュメントがあり、そのドキュメントが空の配列である場合、次のように削除できます。

db.data.remove(array('document'=>array()))

またはこのように:

db.data.remove(array('document'=>[]))

しかし、配列が空でない場合は機能しないので、次のように試しました。

db.data.remove(array('document'=>array('$type'=>4)))

私はそれを間違っていますか?これを行う方法はありますか?別の基準でドキュメントを削除することは私には役に立ちません。

4

1 に答える 1

2

編集: 最後に私はあなたの問題が何であるかを知りました。

// test document
{ "_id" : ObjectId("4fe1af4dd404b1863ff20aac"), "document" : [ 1 ] }

$type演算子は配列自体ではなく配列の内部を調べるため、次の検索では何も返されません。

db.test.find({document : { $type : 4  } })

私のテストケースでは、ドキュメントにdoubleが含まれているので、次の検索でドキュメントが返されます。

db.test.find({document : { $type : 1  } })
{ "_id" : ObjectId("4fe1af4dd404b1863ff20aac"), "document" : [ 1 ] }

このトピックに関するバグレポートも参照してください: https ://jira.mongodb.org/browse/SERVER-1475

于 2012-06-20T11:12:04.747 に答える