在MongoDB中,ordered
選項用于控制批量插入操作的執行順序和錯誤處理方式
使用ordered: false
:當ordered
設置為false
時,批量插入操作會嘗試插入所有文檔,而不會因為單個文檔的錯誤而停止。這種方式可以提高查詢效率,因為它允許數據庫在插入過程中并行處理多個文檔。但是,需要注意的是,這種方式可能會導致一些文檔未能成功插入。
使用ordered: true
:當ordered
設置為true
時(默認值),批量插入操作會按照文檔的順序插入,并在遇到錯誤時停止。這種方式可以確保文檔按照預期的順序插入,但可能會降低查詢效率,因為它不允許并行處理多個文檔。
要提高查詢效率,建議使用ordered: false
選項。但請注意,這可能會導致一些文檔未能成功插入。在實際應用中,你需要根據具體需求和場景來權衡這兩種方式的優缺點。
以下是一個使用Node.js MongoDB驅動程序的示例,展示了如何使用ordered
選項進行批量插入:
const MongoClient = require('mongodb').MongoClient;
const uri = "mongodb+srv://<username>:<password>@cluster0.mongodb.net/test?retryWrites=true&w=majority";
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });
client.connect(err => {
if (err) throw err;
const collection = client.db("test").collection("documents");
const documents = [
{ name: "John", age: 30 },
{ name: "Jane", age: 28 },
{ name: "Alice", age: 35 }
];
collection.insertMany(documents, { ordered: false }, (err, res) => {
if (err) throw err;
console.log(`Number of documents inserted: ${res.insertedCount}`);
client.close();
});
});
在這個示例中,我們將ordered
選項設置為false
,以提高批量插入操作的效率。