У меня есть коллекции, как это:MongoDB запрос предельных значений на основе условия
{ "_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})
получит весь мой документ, включая другой pcodes оплаты, а также, как и в приведенном выше дисплее.
Однако Я требую ответа что-то вроде этого:
{ "_id" : ObjectId("4d45bd25957a15b80702d4e4"), "codenum" : 10, "payment" : [
{
"pcode" : 101,
"amount" : 6000
}
] }
возможно ли это в MongoDB?
В обновлении() имеется позиционное совпадение, которое можно использовать как «платеж. $. Amount», чтобы установить соответствующее поле на основе условия.
Может быть MongoDB может поддерживать запрос, как это:
db.test.find({"codenum":10, "payment.pcode": 101},
{"payment.$.pcode": 1, "payment.$.amount":1})
, которые затем дают только те записи, которые соответствуют условию заданного.
Любые мысли?
спасибо. Когда я просматривал, я заметил, что http://jira.mongodb.org/browse/SERVER-828 - это именно то, что я имел в виду. Будем надеяться, что виртуальная коллекция (СЕРВЕР-142, указанный вами билет JIRA) будет доступна в ближайшее время. Я приму свой ответ. – rsmoorthy