Node.js MongoDB 插入集合

插入集合

要将记录或在 MongoDB 中调用的文档插入到集合中,我们使用 insertOne() 方法。

MongoDB 中的文档与 MySQL 中的记录相同 insertOne() 方法的第一个参数是一个对象,其中包含要插入的文档中每个字段的名称和值。

它还具有一个回调函数,您可以在该函数中处理错误或插入的结果:

实例

将文档插入 "customers" 集合:

  1. var MongoClient = require('mongodb').MongoClient;
  2. var url = "mongodb://localhost:27017/";
  3. MongoClient.connect(url, function(err, db) {
  4. if (err) throw err;
  5. var dbo = db.db("mydb");
  6. var myobj = { name: "Company Inc", address: "Highway 37" };
  7. dbo.collection("customers").insertOne(myobj, function(err, res) {
  8. if (err) throw err;
  9. console.log("1 document inserted");
  10. db.close();
  11. });
  12. });

将上述代码保存在名为 "demo_mongodb_insert.js" 的文件中,然后运行该文件:

运行 "demo_mongodb_insert.js"

C:\Users\ Your Name >node demo_mongodb_insert.js

结果如下:

  1. 1 document inserted
注意:如果尝试在不存在的集合中插入文档,MongoDB 将自动创建集合。

插入多个文档

要在 MongoDB 中将多个文档插入到集合中,我们使用 insertMany() 方法。

insertMany() 方法的第一个参数是对象数组,其中包含要插入的数据。

它还具有一个回调函数,您可以在该函数中处理错误或插入的结果:

实例

将多个文档插入 "customers" 集合:

  1. var MongoClient = require('mongodb').MongoClient;
  2. var url = "mongodb://localhost:27017/";
  3. MongoClient.connect(url, function(err, db) {
  4. if (err) throw err;
  5. var dbo = db.db("mydb");
  6. var myobj = [
  7. { name: 'John', address: 'Highway 71'},
  8. { name: 'Peter', address: 'Lowstreet 4'},
  9. { name: 'Amy', address: 'Apple st 652'},
  10. { name: 'Hannah', address: 'Mountain 21'},
  11. { name: 'Michael', address: 'Valley 345'},
  12. { name: 'Sandy', address: 'Ocean blvd 2'},
  13. { name: 'Betty', address: 'Green Grass 1'},
  14. { name: 'Richard', address: 'Sky st 331'},
  15. { name: 'Susan', address: 'One way 98'},
  16. { name: 'Vicky', address: 'Yellow Garden 2'},
  17. { name: 'Ben', address: 'Park Lane 38'},
  18. { name: 'William', address: 'Central st 954'},
  19. { name: 'Chuck', address: 'Main Road 989'},
  20. { name: 'Viola', address: 'Sideway 1633'}
  21. ];
  22. dbo.collection("customers").insertMany(myobj, function(err, res) {
  23. if (err) throw err;
  24. console.log("Number of documents inserted: " + res.insertedCount);
  25. db.close();
  26. });
  27. });

将上述代码保存在名为 "demo_mongodb_insert_multiple.js" 然后运行文件

运行 "demo_mongodb_insert_multiple.js"

C:\Users\ Your Name >node demo_mongodb_insert_multiple.js

结果如下:

  1. Number of documents inserted: 14

结果对象

执行 insertMany() 方法时,将返回一个结果对象。结果对象包含该插入对数据库的影响的信息。

从上面的示例返回的对象如下所示:

  1. {
  2. result: { ok: 1, n: 14 },
  3. ops: [
  4. { name: 'John', address: 'Highway 71', _id: 58fdbf5c0ef8a50b4cdd9a84 },
  5. { name: 'Peter', address: 'Lowstreet 4', _id: 58fdbf5c0ef8a50b4cdd9a85 },
  6. { name: 'Amy', address: 'Apple st 652', _id: 58fdbf5c0ef8a50b4cdd9a86 },
  7. { name: 'Hannah', address: 'Mountain 21', _id: 58fdbf5c0ef8a50b4cdd9a87 },
  8. { name: 'Michael', address: 'Valley 345', _id: 58fdbf5c0ef8a50b4cdd9a88 },
  9. { name: 'Sandy', address: 'Ocean blvd 2', _id: 58fdbf5c0ef8a50b4cdd9a89 },
  10. { name: 'Betty', address: 'Green Grass 1', _id: 58fdbf5c0ef8a50b4cdd9a8a },
  11. { name: 'Richard', address: 'Sky st 331', _id: 58fdbf5c0ef8a50b4cdd9a8b },
  12. { name: 'Susan', address: 'One way 98', _id: 58fdbf5c0ef8a50b4cdd9a8c },
  13. { name: 'Vicky', address: 'Yellow Garden 2', _id: 58fdbf5c0ef8a50b4cdd9a8d },
  14. { name: 'Ben', address: 'Park Lane 38', _id: 58fdbf5c0ef8a50b4cdd9a8e },
  15. { name: 'William', address: 'Central st 954', _id: 58fdbf5c0ef8a50b4cdd9a8f },
  16. { name: 'Chuck', address: 'Main Road 989', _id: 58fdbf5c0ef8a50b4cdd9a90 },
  17. { name: 'Viola', address: 'Sideway 1633', _id: 58fdbf5c0ef8a50b4cdd9a91 } ],
  18. insertedCount: 14,
  19. insertedIds: [
  20. 58fdbf5c0ef8a50b4cdd9a84,
  21. 58fdbf5c0ef8a50b4cdd9a85,
  22. 58fdbf5c0ef8a50b4cdd9a86,
  23. 58fdbf5c0ef8a50b4cdd9a87,
  24. 58fdbf5c0ef8a50b4cdd9a88,
  25. 58fdbf5c0ef8a50b4cdd9a89,
  26. 58fdbf5c0ef8a50b4cdd9a8a,
  27. 58fdbf5c0ef8a50b4cdd9a8b,
  28. 58fdbf5c0ef8a50b4cdd9a8c,
  29. 58fdbf5c0ef8a50b4cdd9a8d,
  30. 58fdbf5c0ef8a50b4cdd9a8e,
  31. 58fdbf5c0ef8a50b4cdd9a8f,
  32. 58fdbf5c0ef8a50b4cdd9a90,
  33. 58fdbf5c0ef8a50b4cdd9a91 ]
  34. }

属性的值可以这样显示:

实例

返回插入的文档数:

console.log(res.insertedCount)

结果如下:

  1. 14

_id 字段

如果您没有指定 _id 字段,那么 MongoDB 将为您添加一个,并为每个文档分配一个唯一的 id。

在上面的示例中,没有指定_id字段,从结果对象中可以看到,MongoDB 为每个文档分配了唯一的 _id。

如果指定了_id字段,则每个文档的值必须是唯一的:

实例

在 "products" 表中插入三条记录,并带有指定的 _id 字段:

  1. var MongoClient = require('mongodb').MongoClient;
  2. var url = "mongodb://localhost:27017/";
  3. MongoClient.connect(url, function(err, db) {
  4. if (err) throw err;
  5. var dbo = db.db("mydb");
  6. var myobj = [
  7. { <strong>_id: 154</strong>, name: 'Chocolate Heaven'},
  8. { <strong>_id: 155</strong>, name: 'Tasty Lemon'},
  9. { <strong>_id: 156</strong>, name: 'Vanilla Dream'}
  10. ];
  11. dbo.collection("products").insertMany(myobj, function(err, res) {
  12. if (err) throw err;
  13. console.log(res);
  14. db.close();
  15. });
  16. });

将上述代码保存在名为 "demo_mongodb_insert_id.js" 的文件中,然后运行该文件:

运行 "demo_mongodb_insert_id.js"

C:\Users\ Your Name >node demo_mongodb_insert_id.js

结果如下:

  1. {
  2. result: { ok: 1, n: 3 },
  3. ops: [
  4. { _id: 154, name: 'Chocolate Heaven },
  5. { _id: 155, name: 'Tasty Lemon },
  6. { _id: 156, name: 'Vanilla Dream } ],
  7. insertedCount: 3,
  8. insertedIds: [
  9. 154,
  10. 155,
  11. 156 ]
  12. }

分类导航