Mongodb 从文档字段中按索引选择自定义数组元素
我如何根据文档中定义的索引选择特定的数组元素 例如,我有以下文件:Mongodb 从文档字段中按索引选择自定义数组元素,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我如何根据文档中定义的索引选择特定的数组元素 例如,我有以下文件: { "_id" : 1, "idx" : 1, "vals" : [ 1, 2 ] } 我想选择由idx索引定义的vals元素 我已成功选择由文字定义的特定数组元素: > db.test.find({_id:1}, {vals:{$slice:[1, 1]}}) { "_id" : 1, "idx" : 1, "vals" : [ 2 ] } 但是如何在$slice操作符中使用idx字段?最佳方法是在MongoDB 3
{ "_id" : 1, "idx" : 1, "vals" : [ 1, 2 ] }
我想选择由idx
索引定义的vals
元素
我已成功选择由文字定义的特定数组元素:
> db.test.find({_id:1}, {vals:{$slice:[1, 1]}})
{ "_id" : 1, "idx" : 1, "vals" : [ 2 ] }
但是如何在
$slice
操作符中使用idx
字段?最佳方法是在MongoDB 3.2中使用操作符:
db.test.aggregate([
{“$project”:{“VAL”:{“$ARRAYELMAT”:[“$VAL”,“$idx”]}}
])
如果在查询条件中使用
\u id
,也可以使用findOne
,并获取idx
值
var idx=db.test.findOne({“\u id”:1}).idx
find({“_id”:1},{“vals”:{“$slice”:[idx,1]})
使用查找
您需要使用
db.test.find().map(函数(doc){
doc.vals=doc.vals.slice(doc.idx,2);
退货单;
})
结果:
[{“\u id”:1,“asd”:1,“VAL”:[2]}]