我有一个存储在 mongodb 中的文档:
shop: {
_id: '...'
title: 'my shop'
users: [
{
_id: '...',
name: 'user1',
username: '...'
},
{
_id: '...',
name: 'user2',
username: '...'
}
]
}
我使用此查询通过他的 id 获取子文档用户:
Shop.findOne({'users._id': userId}, {'users.$': 1}, function (err, user) {
console.log(user);
});
输出:
{ _id: ...,
users:
[{
name: 'user1',
username: '...',
_id: ...
}]
}
如何过滤结果以仅返回用户名。我现在这样做的方式:
Shop.findOne({'users._id': userId}, {'users.$': 1}, function (err, shop) {
shop = shop.toObject()
user = shop.users[0]
filtered = {
name: user.name
}
callback(filtered);
});
但是有没有更好的方法在查询中完成这一切?