【SequoiaDB巨杉数据库】匹配符 $+标识符

语法

{ <字段名.$+标识符>: <value> }

 

描述

$+标识符 是一种特殊的命令符,这种命令符只作用于数组对象,标识符是一个整数,如 $1,$3,标识符相当于一个临时的存储,会把匹配成功的数组元素的索引存储起来。下面这些是错误的书写格式:$5.4,$a2,$3c,$MA。

这种命令符只作用于数组,用来代替数组的索引 Key,并且可以把匹配到的第一个索引值传递到方法 update 的 rule 参数中。

示例

在集合 sample.employee 插入3条记录:

> db.sample.employee.insert( { "a": [ 1, 2, 3, 4, 5 ] } )
> db.sample.employee.insert( { "a": [ 1, 4, 5 ] } )
> db.sample.employee.insert( { "a": [ 4, 2, 1 ] } )

 

SequoiaDB shell 运行如下:

  • 查询出字段“a”的数组中存在元素5的记录:

    > db.sample.employee.find( { "a.$1": 5 }, { "a": 1 } )
    {
      "a": [
        1,
        2,
        3,
        4,
        5
      ]
    }
    {
      "a": [
        1,
        4,
        5
      ]
    }
    Return 2 row(s).

     

  • 修改数组“a”中的元素,把值为4的元素改成100:

    > db.sample.employee.update( { "$set": { "a.$1": 100 } }, { "a.$1": 4 } )
    > db.sample.employee.find()
    {
      "_id": {
        "$oid": "582450162b4c38286d000014"
      },
      "a": [
        1,
        2,
        3,
        100,
        5
      ]
    }
    {
      "_id": {
        "$oid": "5824501b2b4c38286d000015"
      },
      "a": [
        1,
        100,
        5
      ]
    }
    {
      "_id": {
        "$oid": "582450202b4c38286d000016"
      },
      "a": [
        100,
        2,
        1
      ]
    }
    Return 3 row(s).

     

  • 修改数组“a”中的元素,把值为100的元素改成2,且把1修改为200:

    > db.sample.employee.update( { "$set": { "a.$1": 2, "a.$2": 200 } }, { "a.$1": 100, "a.$2": 1 } )
    > db.sample.employee.find()
    {
      "_id": {
        "$oid": "582450162b4c38286d000014"
      },
      "a": [
        200,
        2,
        3,
        2,
        5
      ]
    }
    {
      "_id": {
        "$oid": "5824501b2b4c38286d000015"
      },
      "a": [
        200,
        2,
        5
      ]
    }
    {
      "_id": {
        "$oid": "582450202b4c38286d000016"
      },
      "a": [
        2,
        2,
        200
      ]
    }
    Return 3 row(s).

     

  • 现在要修改数组“a”中的元素,把值为2的元素改成2000:

    Note:
    如果有多个元素符合规则,那么只会修改第一个。

    > db.sample.employee.update( { "$set" : { "a.$1" : 2000 } }, { "a.$1": 2 } )
    > db.sample.employee.find()
    {
      "_id": {
        "$oid": "582450162b4c38286d000014"
      },
      "a": [
        200,
        2000,
        3,
        2,
        5
      ]
    }
    {
      "_id": {
        "$oid": "5824501b2b4c38286d000015"
      },
      "a": [
        200,
        2000,
        5
      ]
    }
    {
      "_id": {
        "$oid": "582450202b4c38286d000016"
      },
      "a": [
        2000,
        2,
        200
      ]
    }
    Return 3 row(s).
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值