跳到主要内容

db.command.aggregate.indexOfArray

1. 操作符描述#

功能:在数组中找出等于给定值的第一个元素的下标,如果找不到则返回 -1。

声明:db.command.aggregate.indexOfArray([ <array expression>, <search expression>, <start>, <end> ])

2. 操作符参数#

字段类型必填说明
-<Array>any各位置元素详述如下
字段类型必填说明
<array>string一个可以解析为数组的表达式,如果解析为 null,则 indexOfArray 返回 null
<search>string对数据各个元素应用的条件匹配表达式
<start>integer用于指定搜索的开始下标,必须是非负整数
<end>integer用于指定搜索的结束下标,必须是非负整数,指定了 <end> 时也应指定 <start>,否则 <end> 默认当做 <start>

3. 示例代码#

假设集合 stats 有如下记录:

{  "_id": 1,  "sales": [ 1, 6, 2, 2, 5 ]}{  "_id": 2,  "sales": [ 4, 2, 1, 5, 2 ]}{  "_id": 3,  "sales": [ 2, 5, 3, 3, 1 ]}
// 云函数环境下示例代码const tcb = require('@cloudbase/node-sdk')const app = tcb.init({  env: 'xxx'})
const db = app.database()const $ = db.command.aggregateconst _ = db.command
exports.main = async (event, context) => {  const res = await db    .collection('stats')    .aggregate()    .project({      index: $.indexOfArray(['$sales', 2, 2])    })    .end()  console.log(res.data)}

返回结果如下:

{ "_id": 1, "index": 2 }{ "_id": 2, "index": 4 }{ "_id": 3, "index": -1 }