bra*_*hor 2 javascript mongoose mongodb node.js
举个例子,在任何给定的运行时,
Books = {
CatSelect : ["SciFi", "Humor", "History"],
MinPages : [300,50,500]
};
如果我在如下函数中手动编写查询find,它将按预期工作并找到页数大于指定类别中指定数量的书籍。
MyCollection.find({ $or: [ { Category: Books.CatSelect[0], Pages : { $gte: Books.MinPages[0] } }, { Category: Books.CatSelect[1], Pages : { $gte: Books.MinPages[1] } } ] }).execFind(function(err,result){
...
}
Run Code Online (Sandbox Code Playgroud)
但问题是我不知道会选择多少个类别,上面的示例是.find为 2 个类别设置的示例。
如何将不同数量的条件动态地放入函数中.find?
当然,我可以将所有条件放在一个字符串中,但查询不是字符串也不是 JSON,所以我有点迷失了。
您可以根据选择以编程方式构建查询对象。例如:
var selections = [0, 1];
var query = { $or: [] };
for (var i=0; i<selections.length; i++) {
var selection = selections[i];
query.$or.push({
Category: Books.CatSelect[selection],
Pages: { $gte: Books.MinPages[selection] }
});
}
MyCollection.find(query).exec(function(err, result){
//...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2187 次 |
| 最近记录: |