Mongoose,如何用两个或条件做一个find()

Tri*_*Man 5 mongoose mongodb node.js

我正在尝试进行一个查找,它将获得所有具有标题或desc的文档,其中包含正则表达式(有效),然后进一步过滤以仅包含将"private"标志设置为false或者"user"字段设置为给定的userId.

这是我到目前为止所做的...

FCSet.find({}, {"flashCards":0}).or([{ 'title': { $regex: re }}, { 'desc': { $regex: re }}]).or([{ 'private': false}, { 'user': 'userId'}]).sort('title')
Run Code Online (Sandbox Code Playgroud)

这应该只返回6行但它返回56.如果我取出第2或()然后它适用于按标题/ desc过滤.我猜我会以错误的方式去做.

有人可以帮我弄清楚如何正确地做到这一点?

hei*_*nob 13

你必须将ORs放入AND:

FCSet.find( 
    { "flashCards": 0 }, 
    $and: [ 
        { 
            $or: [
                { 'title': { $regex: re } }, 
                { 'desc': { $regex: re } }
            ]
        },
        {
            $or: [ 
                { 'private': false }, 
                { 'user': 'userId' } 
            ]
        }
    ]
).sort('title')
Run Code Online (Sandbox Code Playgroud)