Node.js 猫鼬如何分组
假设我有一个具有字段名的集合,并且只有Sally和Bob的名称存在。我想按此值对结果进行分组。我当前正在获取结果,然后使用下划线执行分组。但我应该可以用一个集合来做这件事。 下面是我的代码Node.js 猫鼬如何分组,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,假设我有一个具有字段名的集合,并且只有Sally和Bob的名称存在。我想按此值对结果进行分组。我当前正在获取结果,然后使用下划线执行分组。但我应该可以用一个集合来做这件事。 下面是我的代码 const names = ['Bob', 'Sally']; const docs = Collection.find({name: { $in: names}}, { fields: { name:1, age:1}, sort: { name:-1 } }).fetch(); //How
const names = ['Bob', 'Sally'];
const docs = Collection.find({name: { $in: names}}, { fields: { name:1, age:1}, sort: { name:-1 } }).fetch();
//How can I do this part in the query above
const { Bob, Sally } = _.groupBy(docs, "name");
您可以这样做:
db.collection.aggregate([
{
$match: {
name: {
$in: names
}
}
},
{
$group: {
"_id": "$name",
age: {
$first: "$age"
}
}
},
{
$sort: {
name: -1
}
}
])
请在此处尝试:您可以执行以下操作:
db.collection.aggregate([
{
$match: {
name: {
$in: names
}
}
},
{
$group: {
"_id": "$name",
age: {
$first: "$age"
}
}
},
{
$sort: {
name: -1
}
}
])
在这里试试:你可以试试
美元符合你的条件
$group by name和make array调用字段并推送名称和年龄
$sort by_id表示名称
$replaceWith替换根目录中的对象,$arrayToObject将k,v格式转换为对象
你可以试试
美元符合你的条件
$group by name和make array调用字段并推送名称和年龄
$sort by_id表示名称
$replaceWith替换根目录中的对象,$arrayToObject将k,v格式转换为对象
表示您在谈论哪些字段?它不允许按对象字段数组排序,但您可以在$group之前执行$sort。当您使用$replaceRoot:{newRoot:{….}时,两者的工作原理相同。请看。您在mongodb驱动程序中使用的是哪种方法?如果我没有错,请看这个。验证管道阶段,在游乐场中,我已更改,在您的错误中,$arraToObject没有获取对象的k和v格式数组。这意味着您正在谈论哪些字段?它不允许按对象字段数组排序,但您可以在$group之前执行$sort。当您使用$replaceRoot:{newRoot:{….}时,这两种方法的工作原理相同。请看。您在mongodb驱动程序中使用的是哪种方法?如果我没有弄错的话,请看这个。请验证管道阶段,在Playerd中,我已更改,并且在您的错误中$arraToObject未获取对象的k和v格式数组。