我有以下型号:
{
"_id" : ObjectId("552ea1cd4ad5dbf56bf9b0ff"),
"nro_socio" : 112323,
"nombre" : "Martina Pardo",
"apellido " : "Biroccio",
"dni " : "27465789",
"direccion " : "Av. Rivadavia 123 1ro A",
"deporte " : [
"RUGBY",
"FUTBOL",
"TENNIS"
],
"cuotas" : [
{
"nro_cuota" : 1,
"fecha_emision" : ISODate("2015-03-10T06:01:17.171Z"),
"fecha_vencimiento " : ISODate("2015-04-01T06:01:17.171Z"),
"importe " : 325,
"fecha_pago " : ISODate("2015-03-19T06:01:17.171Z")
},
{
"nro_cuota " : 2,
"fecha_emision " : ISODate("2015-04-10T06:01:17.171Z"),
"fecha_vencimiento " : ISODate("2015-05-01T06:01:17.171Z"),
"importe " : 325,
"fecha_pago " : ISODate("2015-04-19T06:01:17.171Z")
}
]
}
当我这样做时:
db.socios.find({"cuotas.nro_cuota":1},{nombre:1}).pretty()
找到文件:
{ "_id" : ObjectId("552ea1cd4ad5dbf56bf9b0ff"), "nombre" : "Martina Pardo" }
当我这样做时:
db.socios.find({"cuotas.nro_cuota":2},{nombre:1}).pretty()
我没有。 谁知道为什么?它的查询相同,只更改了数字......
我应该检索同一份文件,对吧?
提前致谢..
答案 0 :(得分:1)
它是相同的查询,但你有不同的键,第二个数组中的另一个键在末尾有一个空格。所以,如果你这样做
db.socios.find({"cuotas.nro_cuota ":2},{nombre:1}).pretty()
你会得到一个匹配。
答案 1 :(得分:0)
这是因为" cuotas"是一个数组。你需要使用elemMatch。看这里:http://docs.mongodb.org/manual/reference/operator/query/elemMatch/#array-of-embedded-documents
db.socios.find({ "cuotas": { $elemMatch: { "nro_cuota": 2 } } }, {nombre:1})