Mongoose默认Scoped查询

时间:2014-12-03 16:16:01

标签: mongodb mongoose

mongoose是否支持类似rails的default_scope?例如,我在我的用户模型中添加了isArchived布尔字段,但我不想更新所有查询以选择isArchived: false个用户。有没有办法在猫鼬中做到这一点?

1 个答案:

答案 0 :(得分:1)

我没有在mongoose文档中看到任何内容,但创建自己的合并查询的作用域函数应该很简单:

var defaultScope = {isArchive: false};

function scope(query){
    for (var s in defaultScope){
        query[s] = defaultScope[s];
    }
    return query;
}

Thing.find(scope({age: 21}), function(err, c){
    console.log(c);
});

它不会处理在默认范围和查询中指定相同属性的操作。必须为$和他们添加一些逻辑。