MongoDB 插入文檔

本章節中我們將向大家介紹如何將數據插入到 MongoDB 的集合中。

文檔的數據結構和 JSON 基本一樣。

所有存儲在集合中的數據都是 BSON 格式。

BSON 是一種類似 JSON 的二進製形式的存儲格式,是 Binary JSON 的簡稱。

插入文檔

MongoDB 使用 insert() 或 save() 方法向集合中插入文檔,語法如下:

db.COLLECTION_NAME.insert(document)
或
db.COLLECTION_NAME.save(document)
  • save():如果 _id 主鍵存在則更新數據,如果不存在就插入數據。該方法新版本中已廢棄,可以使用 db.collection.insertOne()db.collection.replaceOne() 來代替。
  • insert(): 若插入的數據主鍵已經存在,則會拋 org.springframework.dao.DuplicateKeyException 異常,提示主鍵重複,不保存當前數據。

3.2 版本之後新增了 db.collection.insertOne() 和 db.collection.insertMany()。

db.collection.insertOne() 用於向集合插入一個新文檔,語法格式如下:

db.collection.insertOne(
   <document>,
   {
      writeConcern: <document>
   }
)

db.collection.insertMany() 用於向集合插入一個多個文檔,語法格式如下:

db.collection.insertMany(
   [ <document 1> , <document 2>, ... ],
   {
      writeConcern: <document>,
      ordered: <boolean>
   }
)

參數說明:

  • document:要寫入的文檔。
  • writeConcern:寫入策略,默認為 1,即要求確認寫操作,0 是不要求。
  • ordered:指定是否按順序寫入,默認 true,按順序寫入。

實例

以下文檔可以存儲在 MongoDB 的 runoob 數據庫 的 col 集合中:

>db.col.insert({title: 'MongoDB 教程', 
    description: 'MongoDB 是一個 Nosql 數據庫',
    by: '菜鳥教程',
    url: 'http://rb.wikimirror.xyz',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
})

以上實例中 col 是我們的集合名,如果該集合不在該數據庫中, MongoDB 會自動創建該集合並插入文檔。

查看已插入文檔:

> db.col.find()
{ "_id" : ObjectId("56064886ade2f21f36b03134"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "菜鳥教程", "url" : "http://rb.wikimirror.xyz", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
> 

我們也可以將數據定義為一個變量,如下所示:

> document=({title: 'MongoDB 教程', 
    description: 'MongoDB 是一個 Nosql 數據庫',
    by: '菜鳥教程',
    url: 'http://rb.wikimirror.xyz',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
});

執行後顯示結果如下:

{
        "title" : "MongoDB 教程",
        "description" : "MongoDB 是一個 Nosql 數據庫",
        "by" : "菜鳥教程",
        "url" : "http://rb.wikimirror.xyz",
        "tags" : [
                "mongodb",
                "database",
                "NoSQL"
        ],
        "likes" : 100
}

執行插入操作:

> db.col.insert(document)
WriteResult({ "nInserted" : 1 })
> 

插入文檔你也可以使用 db.col.save(document) 命令。如果不指定 _id 字段 save() 方法類似於 insert() 方法。如果指定 _id 字段,則會更新該 _id 的數據。