我在MongoDB Collection中有几个文件,带有一个字段'name'(字符串)。
如何执行7 <= name.length <= 14
答案 0 :(得分:13)
您可以使用JavaScript expression。
User.where("this.name.length >= 7 && this.name.length <= 14")
答案 1 :(得分:12)
Mongo提供了一些使用长度标准执行查询的方法 - $where
或$regex
是两个很好的选项,但我建议使用$regex
,因为查询效果更好。
$where
(较慢) 示例:
db.collection.find({ $where: 'this.name.length >= 7 && this.name.length <= 14' })
注意:$where
运算符不会利用您的数据库索引,从而导致查询速度变慢。 - Source
$regex
(更快) 示例:
db.collection.find({ name: { $regex: /^.{7,14}$/ } })
注意:$regex
运算符将利用您的数据库索引,从而提高查询速度(如果您的集合已正确编入索引)。 - Source
答案 2 :(得分:4)
您可以使用MongoDB的$ where query参数将javascript提交给服务器。 。E.g,:
db.myCollection.find( {$where: "(7 <= this.name.length) && (this.name.length <= 14)"} )
答案 3 :(得分:0)
$where
查询效率不高。 MongoDB
如果这是经常执行的查询,您可能希望将长度存储在单独的字段中。 Denormalization