1. 程式人生 > >MongoDB 批量新增記錄中不存在的欄位

MongoDB 批量新增記錄中不存在的欄位

MongoDB是基於分散式檔案儲存的資料庫,與關係型資料庫不同,記錄中的欄位數量可以各不相同。本文將介紹如何對MongoDB記錄中不存在的欄位進行批量新增並賦值。

MongoDB update方法

update() 方法用於更新已存在的文件,語法如下:

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)

 
引數說明:

  • query: update的查詢條件,類似sql update查詢內where後面的。

  • update: update的物件和一些更新的操作符,也可以理解為sql update查詢內set後面的。

  • upsert: 可選,這個引數的意思是,如果不存在update的記錄,是否插入objNew, true為插入,預設是false,不插入。

  • multi: 可選,mongodb預設是false,只更新找到的第一條記錄,如果這個引數為true,則更新所有按條件查出來的多條記錄。

  • writeConcern: 可選,丟擲異常的級別。

例項,批量新增記錄中不存在的欄位

1.建立測試資料庫

use testdb

db.createUser
( { "user":"root", "pwd":"123456", "roles":[{"role" : "readWrite", "db":"testdb"}] } ) db.auth( { "user":"root", "pwd":"123456" } )

 
2.插入測試資料,部分有is_auth,is_admin

db.member.insert([
    {
        "id" : 1,
        "name"
: "fdipzone", "is_auth" : 1, "is_admin" : 1 }, { "id" : 2, "name" : "tom", "is_admin" : 1 }, { "id" : 3, "name" : "polly" }, { "id" : 4, "name" : "anslem" }, { "id" : 5, "name" : "terry", "is_auth" : 1 } ])

查詢插入記錄

db.member.find();
{ "_id" : ObjectId("58eb8f83e352c5ee4b6db93a"), "id" : 1, "name" : "fdipzone", "is_auth" : 1, "is_admin" : 1 }
{ "_id" : ObjectId("58eb8f83e352c5ee4b6db93b"), "id" : 2, "name" : "tom", "is_admin" : 1 }
{ "_id" : ObjectId("58eb8f83e352c5ee4b6db93c"), "id" : 3, "name" : "polly" }
{ "_id" : ObjectId("58eb8f83e352c5ee4b6db93d"), "id" : 4, "name" : "anslem" }
{ "_id" : ObjectId("58eb8f83e352c5ee4b6db93e"), "id" : 5, "name" : "terry", "is_auth" : 1 }

 
3.對於不存在is_auth, is_admin欄位的記錄,批量插入is_auth, is_admin欄位,值為0。

批量插入is_auth:0

db.member.update(
    {"is_auth" : {$exists : false}},
    {"$set" : {"is_auth" : 0}},
    false,
    true
)

批量插入is_admin:0

db.member.update(
    {"is_admin" : {$exists : false}},
    {"$set" : {"is_admin" : 0}},
    false,
    true
)

插入後查詢,全部記錄都已經含有is_auth, is_admin欄位

db.member.find();
{ "_id" : ObjectId("58eb8f83e352c5ee4b6db93a"), "id" : 1, "name" : "fdipzone", "is_auth" : 1, "is_admin" : 1 }
{ "_id" : ObjectId("58eb8f83e352c5ee4b6db93b"), "id" : 2, "name" : "tom", "is_admin" : 1, "is_auth" : 0 }
{ "_id" : ObjectId("58eb8f83e352c5ee4b6db93c"), "id" : 3, "name" : "polly", "is_auth" : 0, "is_admin" : 0 }
{ "_id" : ObjectId("58eb8f83e352c5ee4b6db93d"), "id" : 4, "name" : "anslem", "is_auth" : 0, "is_admin" : 0 }
{ "_id" : ObjectId("58eb8f83e352c5ee4b6db93e"), "id" : 5, "name" : "terry", "is_auth" : 1, "is_admin" : 0 }