我试图查询文档中的特定数组索引,如下所示:
"_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。如何在不知道其居民价值的情况下查询特定指数?
答案 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
}
}