我没有看到如何在文档中使用像$min
/$max
和 mongoose 这样的查询修饰符。有没有办法这样做?
问问题
736 次
1 回答
0
在使用 Mongoose 时,我不知道有任何自然的方法可以做到这一点,因为 Mongoose 会代表您执行很多操作,以方便可能与其中一些操作正常冲突的事情。
我没有试过这个,但你可以这样做:
Model.find( { $query: { <query> },
$max: { myField: 100 }, $min: { myField: 10 } }, function(err, models) {
// do something with results
});
使用$query
语法和修饰符时,您不能使用其他东西,如 mongoosesort
等,因为它们必须在$query
定义中明确指定。
或者,您可以使用一个或多个查询运算符,例如$gte
. $min
和$max
,作为查询修饰符,两者都强制 MongoDb 使用其他运算符不使用的索引。
Model.find().gte("myField", 10).exec(function(err, models) {})
正如评论中指出的那样,您也可以使用setOptions
(文档)。但是,它仍然具有您不能使用它和许多其他选项的相同限制。
无论如何,我建议您无论如何都应该考虑使用其他查询运算符,例如$gte
, 等等,并让数据库查询引擎根据查询和可用索引做出明智的选择,而不是通过$max
/强制使用索引$min.
通过使用其中任何一个,即使索引有更好的选择,它们也会被使用。
于 2013-10-29T10:50:54.277 回答