我想只返回大于9百万的DOC.AMOUNT的值。问题是我得到了父DOC,因为我只想要孩子AMOUNT:9000000。换句话说,而不是{Key: {Key:Value}}
我想要{Key:Value}}
。
我的查询:
db.acris.find({"DOC. AMOUNT" : {$gt : 9000000}},{"DOC. AMOUNT":1,_id:0}).pretty().limit(5)
以下是我的查询结果:
{ "DOC" : { " AMOUNT" : 9000100 } }
{ "DOC" : { " AMOUNT" : 9001000 } }
{ "DOC" : { " AMOUNT" : 9002135.18 } }
{ "DOC" : { " AMOUNT" : 9002292 } }
{ "DOC" : { " AMOUNT" : 9003572 } }
如何更改查询以便我只获得{" AMOUNT" : value }
?
答案 0 :(得分:1)
您可以使用聚合框架的 $project
运算符来重塑您的文档。这将通过 $match
管道进行管道传输,该管道具有查询逻辑和 $limit
步骤,该步骤将传递要投影的前5个文档:
db.acris.aggregate([
// acts as your query filter, similar to find()
{ "$match": { "DOC. AMOUNT": { "$gt": 9000000 } } },
// similar to limit(5)
{ "$limit": 5 },
// reshape your documents here
{
"$project": {
"_id": 0,
"AMOUNT": "$DOC. AMOUNT"
}
}
])