我从URL中获取一个查询字符串并进行解析,然后将其映射,这样我就得到了这样的对象:
{ '$and': [ { length: { '$gt': '2' } }, { length: { '$lt': '55555' } } ] }
哪个是名为q的常量。
那么猫鼬的查找查询将如何?我尝试过:
Schema.find(q, function (err, results) {
if (err) {
console.log(err);
}
else {
console.log(results);
}
});
但是它会返回空列表([])。控制台登录q后,将打印到控制台:
{ '$and': [ { length: [Object] }, { length: [Object] } ] }
答案 0 :(得分:0)
-fix-将值用作数字,因为在您的数据库中长度被强制转换为数字
db.collection.find({
"$and": [
{
length: {
"$gt": 2 // not '2'
}
},
{
length: {
"$lt": 55555 // not '55555'
}
}
]
})
答案 1 :(得分:0)
const q= { '$and': [ { length: { '$gt': '2' } }, { length: { '$lt': '55555' } } ] }
// converting string key to integer
q['$and'].map(function(obj) {
for(var prop in obj.length){
if(obj.length.hasOwnProperty(prop) && obj.length[prop] !== null && !isNaN(obj.length[prop])){
obj.length[prop] = +obj.length[prop];
}
}
});
console.log(q)
Schema.find(q, function (err, results) {
if (err) {
console.log(err);
}
else {
console.log(results);
}
});