我在mongdb中查询字符串数组,但它不适用于$ gt / $ lt运算符,请参见下文。 " CPU"数组第3个元素是字符串" 12"
nms:PRIMARY> db.checkpoints.find({ "cpu.3": "12" }).limit(1)
{ "_id" : ObjectId("5665ed5d601be0ed56d4ca0a"), "day" : "1", "hostname" : "WAL-VSX-02", "time" : "15:33:54", "con" : [ "75", "44", "10", "25997", "8895", "13788", "338", "20", "226" ], "cpu" : [ "0", "0", "0", "12", "0", "2", "0", "0", "0" ], "__v" : 0 }
nms:PRIMARY> db.checkpoints.find({ "cpu.3": {$gte: 10}})
nms:PRIMARY>
答案 0 :(得分:1)
您将cpu
数组的值存储为字符串,但是您要与整数进行比较。如果将数组更改为int值,则查询将起作用。
答案 1 :(得分:1)
您没有获得任何输出的唯一原因是因为“cpu”是一个字符串数组。您需要使用执行JavaScript评估的$where
运算符,并且无法利用documentation.
db.checkpoints.find({ "$where": function() {
return parseFloat(this.cpu[3]) >= 10;
}})
我建议您更改文档结构并将“cpu”元素转换为float。