mongodb数组操作(添加)

  1. 1. 概述
  2. 2. 添加数组元素
    1. 2.1 $push
    2. 2.2 $addToSet
  3. 3. 批量添加数组元素
    1. 3.1 $push
    2. 3.2 $addToSet

mongodb对数组的操作,对整个文档来说是更新操作,对文档的数组字段有增删改查操作。

1. 概述

mongodb对数组的操作,对整个文档来说是更新操作,对文档的数组字段有增删改查操作。

2. 添加数组元素

2.1 $push

$push向数组中添加元素,不会进行重复性检查。

例如:

{
    _id: NumberInt(1),
    colors: [
        {
            name: "blue"
        },
        {
            name: "green"
        },
        {
            name: "red"
        }
    ]
}
  • 以下操作会插入新的元素
db.getCollection('test').update({ _id: 1 }, { $push: { colors: {"name" : "blue"} } })

变更为

{
    "_id" : 1,
    "colors" : [ 
        {
            "name" : "blue"
        }, 
        {
            "name" : "green"
        }, 
        {
            "name" : "red"
        }, 
        {
            "name" : "blue"
        }
    ]
}

2.2 $addToSet

$addToSet向数组中添加元素,如果元素已经存在不会添加,能够防止添加重复的数据。

例如:

{
    _id: NumberInt(1),
    colors: [
        {
            name: "blue"
        },
        {
            name: "green"
        },
        {
            name: "red"
        }
    ]
}
  • 以下操作不会插入新的元素
db.getCollection('test').update({ _id: 1 }, { $addToSet: { colors: {"name" : "blue"} } })
  • 以下操作会插入新元素
db.getCollection('test').update({ _id: 1 }, { $addToSet: { colors: {"name" : "blue", "id":"222"} } })

变更为

{
    _id: NumberInt(1),
    colors: [
        {
            name: "blue"
        },
        {
            name: "green"
        },
        {
            name: "red"
        },
        {
            name: "blue",
            id: "222"
        }
    ]
}

由此可见$addToSet对object数据的查重也是有效的。

3. 批量添加数组元素

3.1 $push

{ $push: { <field>: { $each: [ <value1>, <value2> ... ] } } }

例如:

{
    _id: NumberInt(1),
    colors: [
        {
            name: "blue"
        },
        {
            name: "green"
        },
        {
            name: "red"
        }
    ]
}
  • 以下操作会插入新的元素
db.getCollection('test').update({ _id: 1 }, { $push: { colors: {$each: [{"name" : "blue"}, {"name" : "blue1"}]} } })

变更为

{
    "_id" : 1,
    "colors" : [ 
        {
            "name" : "blue"
        }, 
        {
            "name" : "green"
        }, 
        {
            "name" : "red"
        }, 
        {
            "name" : "blue"
        }, 
        {
            "name" : "blue1"
        }
    ]
}

3.2 $addToSet

{ $addToSet: { <field>: { $each: [ <value1>, <value2> ... ] } } }

例如:

{
    _id: NumberInt(1),
    colors: [
        {
            name: "blue"
        },
        {
            name: "green"
        },
        {
            name: "red"
        }
    ]
}
  • 以下操作会插入新的元素
db.getCollection('test').update({ _id: 1 }, { $addToSet: { colors: {$each: [{"name" : "blue"}, {"name" : "blue1"}]} } })

变更为

{
    "_id" : 1,
    "colors" : [ 
        {
            "name" : "blue"
        }, 
        {
            "name" : "green"
        }, 
        {
            "name" : "red"
        }, 
        {
            "name" : "blue1"
        }
    ]
}

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 wind.kaisa@gmail.com

💰

×

Help us with donation