1

我没有看到如何在文档中使用像$min/$max和 mongoose 这样的查询修饰符。有没有办法这样做?

4

1 回答 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 回答