$indexOfArray在数组中搜索指定值的匹配项并返回 第一次出现的数组索引。数组索引从零开始
db.test.insert({
key:"12121",
"arrayObj":[{"name":"1","value":100},{"name":"2","value":200},{"name":"3","value":300}],
"arrayStr":["1","2","1","2","3"]
})
db.test.aggregate([
{$match:{key:"12121"}},
//$arrayObj.value:[100,200]
{$addFields:{"indexObj":{"$indexOfArray":["$arrayObj.value", 100 ]}}},// 0
{$addFields:{"indexStr":{"$indexOfArray":["$arrayStr", {$eq:["$$ROOT.arrayStr","1"]} ]}}}, // 0
{$addFields:{"indexBegin":{"$indexOfArray":["$arrayStr", "1" ,1]}}}, //2 第三个参数是搜索开始索引
{$addFields:{"indexEnd":{"$indexOfArray":["$arrayStr", "3" ,1,3]}}}, //-1 第四个参数是搜索结束索引
])