gpt4 book ai didi

javascript - 如何找到 x 个属性匹配但其他属性不同的文档

转载 作者:行者123 更新时间:2023-11-30 20:18:55 24 4
gpt4 key购买 nike

好吧,想象这样一个集合:

[
{
"_id" : ObjectId("5b5f76eb2bfe4a1e9c473bd2"),
"machine" : "NY-D800",
"level" : "Fatal",
},
{
"_id" : ObjectId("5b5f76eb2bfe4a1e9c473bd2"),
"machine" : "NY-D889",
"level" : "Fatal",
},
{
"_id" : ObjectId("5b5f76eb2bfe4a1e9c473bd2"),
"machine" : "NY-D889",
"level" : "Info",
},
{
"_id" : ObjectId("5b5f76eb2bfe4a1e9c473bd2"),
"machine" : "NY-D800",
"level" : "Fatal",
},
...
]

我想查找 level 设置为“Fatal”的文档,但我不想返回重复项(重复的 machine)。因此,例如“NY-D800”与“致命”一起列出了两次,所以我希望它只返回一次。最后我想将返回的值限制为 10 个项目。

回顾:

  1. level = '致命'
  2. 仅由机器确定的唯一值
  3. 限制为 10 个文档

MongoDB 和 Mongoose 可以做到这一点吗?

我试过这个:

 Logs
.distinct({'level': 'Fatal'})
.limit(10)
.exec(function (err, response){
var result = {
status: 201,
message: response
};
if (err){
result.status = 500;
result.message = err;
} else if (!response){
result.status = 404;
result.message = err;
}
res.status(result.status).json(result.message);
});

最佳答案

可以先$match使用级别“致命”,然后应用$group使用机器

Logs.aggregate([
{ "$match": { "level": "Fatal" }},
{ "$group": {
"_id": "$machine",
"level": { "$first": "$level" },
}},
{ "$limit": 10 },
{ "$project": { "machine": "$_id", "level": 1, "_id": 0 }}
])

关于javascript - 如何找到 x 个属性匹配但其他属性不同的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51658759/

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