如何构建我的mongoose查询,以便始终考虑两个语句中的至少一个?

时间:2016-10-14 18:29:12

标签: node.js mongodb mongoose

在我的应用程序中,用户可以添加可见的条目

这是我的猫鼬查询:

  

Mongoose:test.find({updated_at:{' $ gte':new Date(" Fri,2011年10月14日)   00:00:00 GMT"),' $ lte':新日期("星期五,2016年10月14日20:12:14 GMT")},   用户名:{' $ in':[' XXXXXXXXX',' YYYYYYYYYYYYYY' ]},' $或':[{   myFlag:false}]}){fields:undefined}

这就是我构建它的方式:

    if (friends != undefined) {
            var friendsSplitted = friends.split(",");
            query = query.where("username").in(friendsSplitted);
       }


    if (publicEntries != undefined && publicEntries === "true") {
        query = query.or({myFlag: false});
    }

这个查询基本上说:

  

查找属于您的朋友的所有内容或任何内容   将myFlag设置为false。

我想改变它,所以说:

  

查找属于您朋友的所有内容以及任何myFlag设置为false的内容(但不一定属于您的朋友)。

你能帮帮我吗?

1 个答案:

答案 0 :(得分:1)

您应该在$或以下内容中尝试两种查询:

test.find({'$or': [ { myFlag: false },
 {updated_at: { '$gte': new Date("Fri, 14 Oct 2011 00:00:00 GMT"), 
'$lte': new Date("Fri, 14 Oct 2016 20:12:14 GMT") }, 
username: { '$in': [ 'XXXXXXXXX', 'YYYYYYYYYYYYYY' ] } ] })

希望这有帮助!

如果我错过了某些内容,请发表评论。