多个条件的投影查找查询

时间:2014-03-01 11:10:48

标签: mongodb

我想根据几个标准查询文档,然后只保留特定字段。以下查询(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
}

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
    }
}