我有一个看起来像这样的用户对象
{
"_id": ObjectId("string"),
...
"clients": [
{
"_id": ObjectId("client1_string"),
...
},
{
"_id": ObjectId("client2_string"),
...
},
]
}
我想得到这个结果
{
"_id": ObjectId("client1_string"),
...
}
我尝试返回的所有内容都向我返回了包含该客户端的用户对象,但是我想要的只是客户端自己...我在做什么错?我已经测试了从不同问题中找到的两个代码,这是最后一次带来相同结果的尝试。
users.findOne(
{
'_id': ObjectId(user_id)
},
{
'clients': { $elemMatch: { '_id': ObjectId(client_id) }
}
})
答案 0 :(得分:0)
这对我有用(别忘了.toArray())
const result = await users.aggregate([
{ $match: { '_id': ObjectId(user_id) } },
{
$project: {
clients: {
$filter: {
input: '$clients',
as: 'client',
cond: { $eq: ['$$client._id', ObjectId(client_id)] }
}
}
}
}
]).toArray();