嵌入式文档中的数组索引MongoDB查询

时间:2016-06-07 15:55:52

标签: mongodb

我试图查询文档中的特定数组索引,如下所示:

"_id" : ObjectId("5756ea5a59985a9eb714d50b"),
    "fs" : "is",
    "values" : {
            "l_25" : [
                    0,
                    0,
                    0,
                    0,
                    0,
                    NumberLong("2332000000"),
                    NumberLong("2166000000"),
                    NumberLong("2517000000"),
                    NumberLong("2664000000"),
                    NumberLong("2853000000"),
                    NumberLong("2866000000")
            ],
            "l_24" : [
                    0,
                    0,
                    0,
                    0,
                    0,
                    2030000000,
                    2006000000,
                    NumberLong("2420000000"),
                    NumberLong("2614000000"),
                    NumberLong("2803000000"),
                    NumberLong("2817750000")
            ],
    "updated" : ISODate("2016-06-07T15:38:01.898Z"),
    "v" : 1

查询l_25(例如,p.find({'fs' : 'is'},{'values.l_25' : 1}))返回数组就好了。但是尝试查询数组中的特定索引(p.find({'fs' : 'is'},{'values.l_25.6' : 1}))会返回带有空括号的l_25。如何在不知道其居民价值的情况下查询特定指数?

1 个答案:

答案 0 :(得分:1)

您可以在投影

中使用$slice来获得此结果
db.ato.find( {}, { "values.l_25": { $slice: [ 5, 1 ] } } )

这将跳过5个元素并取一个

  

输出:

{
    "_id" : ObjectId("5756ea5a59985a9eb714d50b"),
    "fs" : "is",
    "values" : {
        "l_25" : [ 
            NumberLong(2332000000)
        ],
        "l_24" : [ 
            0.0, 
            0.0, 
            0.0, 
            0.0, 
            0.0, 
            2030000000.0, 
            2006000000.0, 
            NumberLong(2420000000), 
            NumberLong(2614000000), 
            NumberLong(2803000000), 
            NumberLong(2817750000)
        ],
        "updated" : ISODate("2016-06-07T15:38:01.898Z"),
        "v" : 1.0
    }
}