mongodb数组字符串元素查询

时间:2015-12-10 16:00:25

标签: arrays mongodb mongodb-query

我在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> 

2 个答案:

答案 0 :(得分:1)

您将cpu数组的值存储为字符串,但是您要与整数进行比较。如果将数组更改为int值,则查询将起作用。

答案 1 :(得分:1)

您没有获得任何输出的唯一原因是因为“cpu”是一个字符串数组。您需要使用执行JavaScript评估的$where运算符,并且无法利用documentation.

中提到的索引
db.checkpoints.find({ "$where": function() {
    return parseFloat(this.cpu[3]) >= 10;
}})

我建议您更改文档结构并将“cpu”元素转换为float。