У меня есть такая коллекция:
{ "_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})
, которая затем выдаст только те записи, которые соответствуют заданному условию.
Есть мысли?