使用AND和OR进行Meteor MongoDB查询

Meh*_*osh 2 mongodb meteor mongodb-query

我希望在SQL中使用mongo db中的查询:

Select * from Users 
where familyId =@X and (isDeleted =false or isDeleted is null)
Run Code Online (Sandbox Code Playgroud)

已经我有第一个条件,我不知道如何将它与And-Or混合

var myMembers = Meteor.users.find({ "profile.family_id":      Meteor.user().profile.family_id });
Run Code Online (Sandbox Code Playgroud)

应该怎么可能?

chr*_*dam 6

您可以使用$and运算符显式查询:

var family_id = Meteor.user().profile.family_id,
    myMembers = Meteor.users.find({ 
        "$and": [
            { "profile.family_id": family_id },
            {
                "$or": [
                    { "isDeleted": false },
                    { "isDeleted": null } /* or { "isDeleted": { "$exists": false } } */
                ]
            }
        ]
    });
Run Code Online (Sandbox Code Playgroud)

或通过指定以逗号分隔的表达式隐式地:

var family_id = Meteor.user().profile.family_id,
    myMembers = Meteor.users.find({ 
        "profile.family_id": family_id,
        "$or": [
            { "isDeleted": false },
            { "isDeleted": null } /* or { "isDeleted": { "$exists": false } } */
        ]
    });
Run Code Online (Sandbox Code Playgroud)

注意:要检查字段是否存在,可以使用$exists运算符,{ "isDeleted": { "$exists": false } }因为{ isDeleted : null } 查询匹配包含isDeleted值为null或不包含isDeleted字段的字段的文档.