我想根据几个标准查询文档,然后只保留特定字段。以下查询(mongoskin语法)返回当前用户的待办事项,并按标记过滤:
db.collection('users').find({
_id : db.bson_serializer.ObjectID.createFromHexString(req.user._id.toString())
}, {
todos : {
$elemMatch : {
tags : filterTag
}
}
}
然后我尝试添加投影,但不再进行过滤。
db.collection('users').find({
_id : db.bson_serializer.ObjectID.createFromHexString(req.user._id.toString()),
todos : {
$elemMatch : {
tags : filterTag
}
}
}, {
_id : 0,
'todos.value' : 1,
'todos._id' : 1
}
答案 0 :(得分:0)
我实际上找到了聚合的解决方案:
db.collection('users').aggregate({
$unwind : '$todos'
}, {
$match : {
_id : db.bson_serializer.ObjectID.createFromHexString(req.user._id.toString()),
'todos.tags' : filterTag
}
}, {
$project : {
_id : 0,
'todos.value' : 1,
'todos._id' : 1
}
}