• $returnMatch
    • 语法
    • 描述
    • 示例

    $returnMatch

    语法

    返回从“<起始下标>”开始到数组末尾的元素:

    1. { <字段名>: { $returnMatch: <起始下标> } }

    返回从“<起始下标>”开始,长度为指定“<长度>”的元素:

    1. { <字段名>: { $returnMatch: [ <起始下标>, <长度> ] } }

    描述

    $returnMatch 选取匹配成功的数组元素,可以通过参数选取指定的元素。必须结合对数组做展开匹配的匹配符使用($in, $all等,不支持$elemMatch)。

    示例

    原始记录:

    1. > db.foo.bar.find()
    2. {
    3. "a": [
    4. 1,
    5. 2,
    6. 4,
    7. 7,
    8. 9
    9. ]
    10. }
    • 查询集合 foo.bar 中“a”字段数组元素的值为1或4或7的记录:
    1. > db.foo.bar.find({a:{$in:[1,4,7]}})
    2. {
    3. "a": [
    4. 1,
    5. 2,
    6. 4,
    7. 7,
    8. 9
    9. ]
    10. }

    Note:不带$returnMatch,默认返回原始记录,这其中包括没有匹配到的元素2和9。

    • 查询集合 foo.bar 中“a”字段数组元素的值为1或4或7的记录,并选取命中的所有元素:
    1. > db.foo.bar.find({a:{$returnMatch:0, $in:[1,4,7]}})
    2. {
    3. "a": [
    4. 1,
    5. 4,
    6. 7
    7. ]
    8. }

    Note:$returnMatch:0, 表示选取下标为0开始的所有命中的元素,不包括没有命中的元素2和9

    • 查询集合 foo.bar 中“a”字段数组元素的值为1或4或7的记录,并选取第2,3个命中的元素:
    1. > db.foo.bar.find({a:{$returnMatch:[1,2], $in:[1,4,7]}})
    2. {
    3. "a": [
    4. 4,
    5. 7
    6. ]
    7. }

    Note:$returnMatch:[1,2], 表示选取下标为1开始,长度为2的所有命中的元素