【发布时间】:2011-06-18 05:28:02
【问题描述】:
我有一个这样的收藏:
{ "_id" : ObjectId("4d45bd25957a15b80702d4e4"), "codenum" : 10, "payment" : [
{
"pcode" : 100,
"amount" : 10000
},
{
"pcode" : 101,
"amount" : 6000
}
], "age" : 70 }
请注意,支付数组嵌入在此集合中。现在,我想在查找响应中仅检索匹配 101 的付款代码。
给出这样的查询:
db.test.find({"codenum":10, "payment.pcode": 101},
{"codenum":1, "payment.pcode":1, "payment.amount":1})
将获得我的整个文档,包括其他支付代码,如上图所示。
但是,我需要这样的回复:
{ "_id" : ObjectId("4d45bd25957a15b80702d4e4"), "codenum" : 10, "payment" : [
{
"pcode" : 101,
"amount" : 6000
}
] }
在 mongodb 中可以吗?
在update()中有一个位置匹配,可以像“payment.$.amount”一样根据条件设置匹配字段。
可能MongoDB可以支持这样的查询:
db.test.find({"codenum":10, "payment.pcode": 101},
{"payment.$.pcode": 1, "payment.$.amount":1})
然后将只给出符合给定条件的条目。
有什么想法吗?
【问题讨论】: