Node.js MongoDB 插入集合
插入集合
要将记录或在 MongoDB 中调用的文档插入到集合中,我们使用 insertOne() 方法。
MongoDB 中的文档与 MySQL 中的记录相同 insertOne() 方法的第一个参数是一个对象,其中包含要插入的文档中每个字段的名称和值。
它还具有一个回调函数,您可以在该函数中处理错误或插入的结果:
实例
将文档插入 "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"
结果如下:
1 document inserted
插入多个文档
要在 MongoDB 中将多个文档插入到集合中,我们使用 insertMany() 方法。
insertMany() 方法的第一个参数是对象数组,其中包含要插入的数据。
它还具有一个回调函数,您可以在该函数中处理错误或插入的结果:
实例
将多个文档插入 "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"
结果如下:
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 ]}
属性的值可以这样显示:
实例
返回插入的文档数:
结果如下:
14
_id 字段
如果您没有指定 _id 字段,那么 MongoDB 将为您添加一个,并为每个文档分配一个唯一的 id。
在上面的示例中,没有指定_id字段,从结果对象中可以看到,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 = [{ <strong>_id: 154</strong>, name: 'Chocolate Heaven'},{ <strong>_id: 155</strong>, name: 'Tasty Lemon'},{ <strong>_id: 156</strong>, 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"
结果如下:
{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 ]}