我认为您的意思是$exists,只要该字段存在于文档中,它就会返回:
User.find({
"deleted": false,
"$or": [
{ "idNo": "123456" },
{ "passportNo": { "$exists": true } }
]
})
如果您的文档实际上“没有”任何形式的字段,那么情况正好相反:
{ "passportNo": { "$exists": false } }
此外,所有查询参数都是隐含的“与”条件。只需要在同一字段上查询多个条件时才需要操作符。
一般来说,您的示例不是很清楚,并且还缺少“已删除”字段。假设它确实存在,那么您可能根本不想要 $or 代码,而只是:
User.find({
"deleted": false,
"idNo": "123456",
"passportNo": { "$exists": false }
})
或者只是:
User.find({
"deleted": false,
"idNo": "123456",
})
所以就你的问题的标题而言,这真的没有意义
看来你没有问你真正想说的问题。如果您正在处理表单输入之类的内容,那么您可以根据提供的内容“构建”查询。
在 JavaScript 上下文中,您可能正在使用 express,因此您最终会得到如下内容:
var query = {
"deleted": false
};
if ( req.params.idNo != '' )
query.idNo = req.params.idNo;
if ( req.params.passportNo != '' )
query.passportNo = req.params.passportNo;
User.find(query);
这就是我们“构建”查询的意思,以及您最终似乎想要做的事情。