Node.js MongoDB 插入数据


插入集合

要插入一条记录,或文档正如 MongoDB 中所说的那样,在集合中,我们使用insertOne()方法。

文档在 MongoDB 中与记录在MySQL中

第一个参数insertOne()method 是一个对象,其中包含要插入的文档中每个字段的名称和值。

它还需要一个回调函数,您可以在其中处理任何错误或插入结果:

示例

在 "customers" 集合中插入文档:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  var myobj = { name: "Company Inc", address: "Highway 37" };
  dbo.collection("customers").insertOne(myobj, function(err, res) {
    if (err) throw err;
    console.log("1 document inserted");
    db.close();
  });
});
运行示例 »

将上面的代码保存在名为 "demo_mongodb_insert.js" 的文件中并运行该文件:

运行"demo_mongodb_insert.js"

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

这会给你这个结果:

1 document inserted

笔记:如果您尝试在不存在的集合中插入文档,MongoDB 将自动创建该集合。



插入多个文档

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

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

它还需要一个回调函数,您可以在其中处理任何错误或插入结果:

示例

在 "customers" 集合中插入多个文档:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  var myobj = [
    { name: 'John', address: 'Highway 71'},
    { name: 'Peter', address: 'Lowstreet 4'},
    { name: 'Amy', address: 'Apple st 652'},
    { name: 'Hannah', address: 'Mountain 21'},
    { name: 'Michael', address: 'Valley 345'},
    { name: 'Sandy', address: 'Ocean blvd 2'},
    { name: 'Betty', address: 'Green Grass 1'},
    { name: 'Richard', address: 'Sky st 331'},
    { name: 'Susan', address: 'One way 98'},
    { name: 'Vicky', address: 'Yellow Garden 2'},
    { name: 'Ben', address: 'Park Lane 38'},
    { name: 'William', address: 'Central st 954'},
    { name: 'Chuck', address: 'Main Road 989'},
    { name: 'Viola', address: 'Sideway 1633'}
  ];
  dbo.collection("customers").insertMany(myobj, function(err, res) {
    if (err) throw err;
    console.log("Number of documents inserted: " + res.insertedCount);
    db.close();
  });
});
运行示例 »

将上面的代码保存在名为 "demo_mongodb_insert_multiple.js" 的文件中并运行该文件:

运行"demo_mongodb_insert_multiple.js"

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

这会给你这个结果:

Number of documents inserted: 14

结果对象

当执行insertMany()方法,返回一个结果对象。

结果对象包含有关插入如何影响数据库的信息。

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

{
  result: { ok: 1, n: 14 },
  ops: [
    { name: 'John', address: 'Highway 71', _id: 58fdbf5c0ef8a50b4cdd9a84 },
    { name: 'Peter', address: 'Lowstreet 4', _id: 58fdbf5c0ef8a50b4cdd9a85 },
    { name: 'Amy', address: 'Apple st 652', _id: 58fdbf5c0ef8a50b4cdd9a86 },
    { name: 'Hannah', address: 'Mountain 21', _id: 58fdbf5c0ef8a50b4cdd9a87 },
    { name: 'Michael', address: 'Valley 345', _id: 58fdbf5c0ef8a50b4cdd9a88 },
    { name: 'Sandy', address: 'Ocean blvd 2', _id: 58fdbf5c0ef8a50b4cdd9a89 },
    { name: 'Betty', address: 'Green Grass 1', _id: 58fdbf5c0ef8a50b4cdd9a8a },
    { name: 'Richard', address: 'Sky st 331', _id: 58fdbf5c0ef8a50b4cdd9a8b },
    { name: 'Susan', address: 'One way 98', _id: 58fdbf5c0ef8a50b4cdd9a8c },
    { name: 'Vicky', address: 'Yellow Garden 2', _id: 58fdbf5c0ef8a50b4cdd9a8d },
    { name: 'Ben', address: 'Park Lane 38', _id: 58fdbf5c0ef8a50b4cdd9a8e },
    { name: 'William', address: 'Central st 954', _id: 58fdbf5c0ef8a50b4cdd9a8f },
    { name: 'Chuck', address: 'Main Road 989', _id: 58fdbf5c0ef8a50b4cdd9a90 },
    { name: 'Viola', address: 'Sideway 1633', _id: 58fdbf5c0ef8a50b4cdd9a91 } ],
  insertedCount: 14,
  insertedIds: [
    58fdbf5c0ef8a50b4cdd9a84,
    58fdbf5c0ef8a50b4cdd9a85,
    58fdbf5c0ef8a50b4cdd9a86,
    58fdbf5c0ef8a50b4cdd9a87,
    58fdbf5c0ef8a50b4cdd9a88,
    58fdbf5c0ef8a50b4cdd9a89,
    58fdbf5c0ef8a50b4cdd9a8a,
    58fdbf5c0ef8a50b4cdd9a8b,
    58fdbf5c0ef8a50b4cdd9a8c,
    58fdbf5c0ef8a50b4cdd9a8d,
    58fdbf5c0ef8a50b4cdd9a8e,
    58fdbf5c0ef8a50b4cdd9a8f
    58fdbf5c0ef8a50b4cdd9a90,
    58fdbf5c0ef8a50b4cdd9a91 ]
}

属性的值可以这样显示:

示例

返回插入文档的数量:

console.log(res.insertedCount)

这将产生这样的结果:

14

_id 字段

如果您不指定_id字段,然后 MongoDB 会为您添加一个字段,并为每个文档分配一个唯一的 id。

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

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

示例

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

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  var myobj = [
    { _id: 154, name: 'Chocolate Heaven'},
    { _id: 155, name: 'Tasty Lemon'},
    { _id: 156, name: 'Vanilla Dream'}
  ];
  dbo.collection("products").insertMany(myobj, function(err, res) {
    if (err) throw err;
    console.log(res);
    db.close();
  });
});
运行示例 »

将上面的代码保存在名为 "demo_mongodb_insert_id.js" 的文件中并运行该文件:

运行"demo_mongodb_insert_id.js"

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

这会给你这个结果:

{
  result: { ok: 1, n: 3 },
  ops: [
    { _id: 154, name: 'Chocolate Heaven },
    { _id: 155, name: 'Tasty Lemon },
    { _id: 156, name: 'Vanilla Dream } ],
  insertedCount: 3,
  insertedIds: [
    154,
    155,
    156 ]
}