千家信息网

【MongoDB学习笔记12】深入MongoDB的更新(update)操作:数组修改

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,查看一个文档的一个键值comments为一个数组["test1","test2"]:> db.post.findOne({"id":1}) { "_id" : ObjectId("5
千家信息网最后更新 2025年01月20日【MongoDB学习笔记12】深入MongoDB的更新(update)操作:数组修改

查看一个文档的一个键值comments为一个数组["test1","test2"]:

> db.post.findOne({"id":1})   {        "_id" : ObjectId("54a530c3ff0df3732bac1680"),        "id" : 1,        "name" : "joe",        "age" : 21,        "comments" : [            "test1",            "test2"        ]    }    >

一、$push向数组末尾添加元素

> db.post.update({"id":1},{$push:{"comments": "test3"}})   WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })    > db.post.findOne({"id":1})    {        "_id" : ObjectId("54a530c3ff0df3732bac1680"),        "id" : 1,        "name" : "joe",        "age" : 21,        "comments" : [            "test1",            "test2",            "test3"        ]    }    >


使用$each一次性添加多个值:

> db.post.update({"id":1},{$push:{"comments":{$each:["test4","test5","test6"]}}})   WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })    > db.post.findOne({"id":1})    {        "_id" : ObjectId("54a530c3ff0df3732bac1680"),        "id" : 1,        "name" : "joe",        "age" : 21,        "comments" : [            "test1",            "test2",            "test3",            "test4",            "test5",            "test6"        ]    }    >

二、用$pop删除数组中的元素

从数组末尾删除一个值:

> db.post.update({"id":1},{$pop:{"comments":1}})   WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })    > db.post.findOne({"id":1})    {        "_id" : ObjectId("54a530c3ff0df3732bac1680"),        "id" : 1,        "name" : "joe",        "age" : 21,        "comments" : [            "test1",            "test2",            "test3",            "test4",            "test5"        ]    }

从数组开头删除一个值:

> db.post.update({"id":1},{$pop:{"comments":-1}})    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })    > db.post.findOne({"id":1})    {        "_id" : ObjectId("54a530c3ff0df3732bac1680"),        "id" : 1,        "name" : "joe",        "age" : 21,        "comments" : [            "test2",            "test3",            "test4",            "test5"        ]    }    >

三、删除数组中一个指定的值:

> db.post.update({"id":1},{$pull:{"comments":"test3"}})   WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })    > db.post.findOne({"id":1})    {        "_id" : ObjectId("54a530c3ff0df3732bac1680"),        "id" : 1,        "name" : "joe",        "age" : 21,        "comments" : [            "test2",            "test4",            "test5"        ]    }    >

四、基于数组下标位置修改:

> db.post.update({"id":1},{$set:{"comments.1":"test9"}})   WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })    > db.post.findOne({"id":1})    {        "_id" : ObjectId("54a530c3ff0df3732bac1680"),        "id" : 1,        "name" : "joe",        "age" : 21,        "comments" : [            "test2",            "test9",            "test5"        ]    }    >



0