gpt4 book ai didi

node.js - 如何获取具有不同值(其中其他值最低)的 (Node.js) MongoDB 文档?

转载 作者:太空宇宙 更新时间:2023-11-03 23:41:38 26 4
gpt4 key购买 nike

我有一个这样的集合:

{
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'
}

最佳答案

您可以使用$min aggregation framework 中的运算符使用如下查询来实现您想要的目的:

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
}

关于node.js - 如何获取具有不同值(其中其他值最低)的 (Node.js) MongoDB 文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22676705/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com