[英]Node.js Mongodb documents values type is BSON LONG how to get accurate value?
[英]How can I get (Node.js) MongoDB documents with a distinct value where some other value is the lowest?
我有一個這樣的收藏:
{
name : 'a',
value: 10,
word : 'baz'
},
{
name : 'a',
value: 65,
word : 'bar'
},
{
name : 'a',
value: 3,
word : 'foo'
},
{
name : 'b',
value: 110,
word : 'bar'
},
{
name : 'b',
value: 256,
word : 'baz'
}
如何執行查詢以選擇name
唯一且value
最低的完整文檔? 例如:
{
name : 'a',
value: 3,
word : 'foo'
},
{
name : 'b',
value: 110,
word : 'bar'
}
您可以在aggregation framework
使用$min
運算符來實現所需的查詢,例如:
db.collection.aggregate([
{$group:{_id:"$name", value:{$min:"$value"}}},
{$limit:2}
])
該查詢將返回:
{
"result" : [
{
"_id" : "b",
"value" : 110
},
{
"_id" : "a",
"value" : 3
}
],
"ok" : 1
}
如果希望對結果進行排序,則還可以在管道中包括$sort
階段。
編輯:您可以使用整潔的小技巧選擇$ group的_id字段中未包括的其他元素。 首先對文檔進行排序,然后使用$first
運算符:
db.collection.aggregate([
{$sort:{value:1}},
{$group:{_id:"$name", value:{$min:"$value"}, word:{$first:"$word"}}}
])
該查詢將返回:
{
"result" : [
{
"_id" : "b",
"value" : 110,
"word" : "bar"
},
{
"_id" : "a",
"value" : 3,
"word" : "foo"
}
],
"ok" : 1
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.