$field

语法

  1. { $field: <字段名> }

描述

$field 是取字段符,用于取出指定字段的值,应用于其它操作,支持的操作包括:

  • 用于查询操作的匹配条件中,语法格式如下:

    1. { <字段名1>: { $field: <字段名2> }, ... }
    2. { <字段名1>: { <匹配符>: { $field: <字段名2> } }, ... }
  • 用于更新操作的更新规则中,支持的更新符包括 $inc$set$pop$pull$pull_by$push,语法格式如下:

    1. { <更新符>: { <字段名1>: { $field: <字段名2> } } }

    对于 $inc 操作,由于其值的部分还支持对象的形式,因此,还支持如下语法格式:

    1. { $inc: { <字段名1>: { Value: { $field: <字段名2> } [, Default: 默认值, Min: 最小值, Max: 最大值 ] } } }

示例

此处只举若干示例,更多示例请到各操作符章节查看。

  • 创建集合 sample.employee 并插入以下 2 条记录:

    1. { "t1": 100, "t2": 100 }
    2. { "t1": 200, "t2": 150 }
  • 查询 company.employee 中 “t1” 字段值等于 “t2” 字段的记录:

    1. > db.sample.employee.find( { "t1": { "$field": "t2" } } )
    2. {
    3. "t1": 100,
    4. "t2": 100
    5. }
  • 查询 sample.employee 中 “t1” 字段值大于 “t2” 字段的记录:

    1. > db.sample.employee.find( { "t1": { "$gt": { "$field": "t2" } } } )
    2. {
    3. "t1": 200,
    4. "t2": 150
    5. }
  • 将字段 “t2” 设置为与 “t1” 相同:

    1. > db.sample.employee.update({ $set: { t2: { $field: "t1" } } })

    该操作完成后,记录如下:

    1. { "t1": 100, "t2": 100 }
    2. { "t1": 200, "t2": 200 }
  • 将字段 “t2” 的值累加到 “t1” 上:

    1. > db.sample.employee.update({ $inc: { t1: { Value: { $field: "t2" } } } })

    该操作完成后,记录如下:

    1. { "t1": 200, "t2": 100 }
    2. { "t1": 400, "t2": 200 }