MongoDB ではサブドキュメントをフィルタリングする方法がないため (参考:MongoDB でサブドキュメントを選択する方法)
以下の例のフィールドを持たない、指定されたフィールドを持たないフィールドをすばやく削除/フィルタリングするための別の方法/メソッドは MongoDB 内にありsubdocument
ますか?
mongodb の外部で結果を処理し、すべての空のドキュメントを除外することによってこれを行う唯一の方法はありますか?
(さまざまなスキーマを持つ 1000 のサブドキュメントがある状況を想像してみてください。私は .find() を実行して 1000 のサブドキュメントを取得しましたが、900 は空です。100 を取得したいだけなので、常に処理する必要はありません。空のものは MongoDB の外にドロップしてください。)
たとえば、次の JSON があるとしますcollection named monday
。
{
document : [
{
subdocument : "Hello World"
},
{
subdocument : "Hello Moon"
},
{
another_field: "Hello Sun"
}
]
}
そして、あなたはこのクエリを作成しますdb.monday.find({},{_id:0,"document.subdocument":1})
結果は次のようになります。
{ "document" : [
{ "subdocument" : "Hello World" },
{ "subdocument" : "Hello Moon" },
{ }
] }
空であるにもかかわらず、another_field がまだ返されていることがわかります。