将数组中的第一项投影到新字段(MongoDB聚合)
我正在使用Mongoose聚合(MongoDB 3.2版) 我有一个字段将数组中的第一项投影到新字段(MongoDB聚合),mongodb,mongoose,aggregation-framework,Mongodb,Mongoose,Aggregation Framework,我正在使用Mongoose聚合(MongoDB 3.2版) 我有一个字段users,它是一个数组。我想将此数组中的第一项$project添加到一个新字段user 我试过了 { $project: { user: '$users[0]', otherField: 1 }}, { $project: { user: '$users.0', otherField: 1 }}, { $project: { user: { $first: '
users
,它是一个数组。我想将此数组中的第一项$project
添加到一个新字段user
我试过了
{ $project: {
user: '$users[0]',
otherField: 1
}},
{ $project: {
user: '$users.0',
otherField: 1
}},
{ $project: {
user: { $first: '$users'},
otherField: 1
}},
但两者都不起作用
我怎样才能正确地做呢?谢谢您可以使用:
启动
Mongo 4.4
,可以使用聚合运算符访问数组的第一个元素:
// { "users": ["Jean", "Paul", "Jack"] }
// { "users": ["Claude"] }
db.collection.aggregate([
{ $project: { user: { $first: "$users" } } }
])
// { "user" : "Jean" }
// { "user" : "Claude" }
如果它是一个对象数组,并且您只想使用单个对象字段,即:
{
"users": [
{name: "John", surname: "Smith"},
{name: "Elon", surname: "Gates"}
]
}
您可以使用:
{ $project: { user: { $first: "$users.name" } }
我们如何直接投影数组元素的键的可能重复?喜欢[{name:'foo'}],我想直接投影名称。@SachinBhandari{$arrayElemAt:[“$users.key.anotherNestedKey”,0]}
{ $project: { user: { $first: "$users.name" } }