我没有看到如何在文档中使用像$min
/ $max
这样的查询修饰符和mongoose。有办法吗?
答案 0 :(得分:0)
在使用Mongoose时,我不知道有任何自然的方法,因为Mongoose代表您执行大量操作以使方便,可能会与某些操作正常冲突。
我没试过这个,但你可以这样做:
Model.find( { $query: { <query> },
$max: { myField: 100 }, $min: { myField: 10 } }, function(err, models) {
// do something with results
});
使用$query
语法和修饰符时,不能使用mongoose的sort
等其他内容,因为必须在$query
定义中明确指定它们。
或者,您可以使用一个或多个查询运算符,例如$gte
。 $min
和$max
作为查询修饰符,都强制MongoDb使用其他运算符不使用的索引。
Model.find().gte("myField", 10).exec(function(err, models) {})
正如评论中所指出的,您还可以使用setOptions
(documentation)。但是,它仍然具有相同的限制,您无法使用它和许多其他选项。
在任何情况下,我都建议您应该考虑使用其他查询运算符,例如$gte
等,并让数据库查询引擎根据查询和可用索引做出明智的选择感觉而不是通过$max
/ $min.
强制使用索引。使用其中任何一个,即使对索引有更好的选择,也会使用它们。