2013-03-26 11 views
14

すべて{"module" : "B"}を照会するには?サブフィールド別mongodbクエリ

次のクエリでは動作しません:

db.XXX.find({ "_id" : { "module" : "B" } }); 

おかげトンを!

{ 
    "_id" : {"module" : "A","date" : ISODate("2013-03-18T07:00:00Z")}, 
    "value" : {"count" : 1.0} 
} 

{ 
    "_id" : {"module" : "B","date" : ISODate("2013-03-18T08:00:00Z")}, 
    "value" : {"count" : 2.0} 
} 
+0

これは、文書識別子は非常に奇妙です(_id)フィールド – ajduke

答えて

27

は試してみてください。

db.XXX.find({ "_id.module" : "B" }); 

差があなたの元のクエリは、その全体に一致しようとしていることになるで

あり、データは次のようになりますsubdocument(つまり、_idは、 "B"という値を持つ "module"フィールドを含むサブドキュメントであり、その他は何もありません)

参考:正確に一致するMongoDB Dot Notation

1

使用ドット表記:

db.XXX.find({ "_id.module" : "B" }) 
1

サブ文書

db.bios.find(
    { 
    '_id.module': 'B' 
    } 
) 

上のクエリがsubdocumentのフィールドにアクセスするためにdot表記法を使用しています。

Refference link

+1

あなたはBの後に余分な引用符を持っています。それ)。 – tandrewnichols