1、插入并保存文档
db.collection.insertOne() Inserts a single document into a collection.
db.collection.insertMany() db.collection.insertMany() inserts multiple documents into a collection.
db.collection.insert() db.collection.insert() inserts a single document or multiple documents into a collection.
示例:
db.products.insertOne( { item: "card", qty: 15 } );
批量插入
书中的29的batchInsert方法是错误的,没有这个方法,提供的是insertMany或者insert。
db.collection.insertMany(
[ <document 1> , <document 2>, ... ],
{
writeConcern: <document>,
ordered: <boolean>
}
)
每一组操作至多包含1000个操作,如果超出了这个限制,mongodb将划分成1000或者更少的组。这个限制未来可能会调整。ordered默认是true的,在一个分片的集合中,会比unordered慢,因为它是按照队列操作的。
示例:
db.products.insertMany( [
{ _id: 10, item: "large box", qty: 20 },
{ _id: 11, item: "small box", qty: 55 },
{ _id: 12, item: "medium box", qty: 30 }
] );
db.products.insert(
[
{ _id: 20, item: "lamp", qty: 50, type: "desk" },
{ _id: 21, item: "lamp", qty: 20, type: "floor" },
{ _id: 22, item: "bulk", qty: 100 }
],
{ ordered: false }
)
NOTE:
默认,mongodb执行的是顺序的插入。如果顺序插入的时候,在一个插入发生错误之后,后续的插入将不再执行;如果是无需的插入,那么发生错误之后,后续的插入还将继续执行。在执行完step1之后,step2执行的结果跟step3是不同的,step3中会插入30,但是step2终不会。
step1:db.foo.insertMany([{"_id":1},{"_id":2},{"_id":3}]);
step2:db.foo.insertMany([{"_id":10},{"_id":2},{"_id":30}]);
step3:db.foo.insertMany([{"_id":10},{"_id":2},{"_id":30}],{ ordered: false});
2、删除文档
书中的remove没有加{},这样写是错误的。
这本书太久了,现在的好多用法都变了,坑爹,只拿这本书的目录学习,以后的所有的内容都按以官方文档为准
官方文档如下:
To remove all documents in a collection, call the remove method with an empty query document {}
db.collection.remove(
<query>,
<justOne>
)
示例如下:
db.bios.remove( { } )
db.products.remove( { qty: { $gt: 20 } }, true )
NOTE:
justOne,默认是false,会删除匹配的所有记录,如果只删除一个则设定为true
从一个集合中删除所有的文档,更有效率的方法是用drop()
方法删除整个集合,包括索引,然后在重建整个集合和重建索引
3、更新文档
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>,
collation: <document>
}
)
update()
默认只能更新一个文档,对于整个文档的更新,update操作只能更新一个,multi的选项是针对$操作符multi update only works with $ operators