2
我想在MongDB中编写一个查询来选择用户部分完成其配置文件的所有行。MongoDB查询哪里不是全部
凡F1或F2或F3为空或“”但不是在三个字段为空或“”
我的意思是其中一个或两个的三个字段为空,但不是三个字段
我已经试过这不返回预期的记录: 修订
var query = {
$or:[
{"profile.public.f1": {$in: [null, false, '']}},
{"profile.public.f2": {$in: [null, false, '']}},
{"profile.public.f3": {$in: [null, false, '']}}
]
};
此查询中使用的NodeJS像这样:
function GetDocument(model, query, projection, extension, callback) {
var query = db[model].find(query, projection, extension.options);
if (extension.populate) {
query.populate(extension.populate);
}
if (extension.sort) {
query.sort(extension.sort);
}
query.exec(function (err, docs) {
if (extension.count) {
query.count(function (err, docs) {
callback(err, docs);
});
} else {
callback(err, docs);
}
});
}
再后来:
db.GetDocument('users', query, {}, {}, function (err, docdata) {
console.log(docdata)
});
请你能帮助详细解释这一点:它分解:'变种q = {$其中:function(){return((this.f1.length ||'')+(this.f2.length ||'')+(this.f3 ||'').length)> 0 ;}};' – Digitlimit
已更新的答案。对不起,错别字 - 家里的笔记本电脑很不舒服 –
Vao Tsun感谢你的所有努力。这可以在nodejs中工作吗? – Digitlimit