插入
db.foo.insert({"bar":"baz"});
批量插入
db.foo.batchInsert([{"_id":0},{"_id":1},{"_id":2}]);
会报如下异常:
2018-04-06T08:56:19.938+0800 E QUERY [thread1] TypeError: db.foo.batchInsert is not a function :
当前数据库版本
db.version() ; // 3.6.3
而batchInsert是在2.4版本中的,新版本中已经废弃,可用insert()
方法进行批量插入
db.foo.Insert([{"_id":0},{"_id":1},{"_id":2}])
需要注意的是:如果批量插入时,第三个(包括第三个)文档插入时出现了异常,
则在第第三个往后面的都不会成功,前面的都能成功。
注意:MongoDB限制每个文档都必须小于16MB。
删除文档
# 删除foo集合中的文档,但是不会删除集合本身,也不会删除集合的元数据信息
# 参数为查询文档的可选参数
db.foo.remove() ;
# 不仅删除数据,同时删除集合和元数据
db.tester.drop()
db.testup.insert({"name":"bob","friends":32,"enemies":2})
准备如下文档:
{
"_id" : ObjectId("5ac6cb2d9c82a2b3bc64ba47"),
"name" : "bob",
"friends" : 32,
"enemies" : 2
}
现在将friends和enemies合并到relationships子文档中去
# 查询指定文档
var bob = db.testup.findOne({"name":"bob"}) ;
# 创建子文档
bob.relationships = {"friends":bob.friends,"enemies":bob.enemies} ;
# 删除之前的文档
delete bob.friends
delete bob.enemies
# 执行更新操作
db.testup.update({"name":"bob"},bob) ;
注意:上述例子最后使用_id作为查询条件,因为_id是唯一的,而且还快些
因为添加了索引。
更新修改器
增加、修改、或者删除的时候应该使用$修改器。
$inc
db.testup2.insert({"url":"http://www.baidu.com","pageviews":199});
# 使用修改器除了_id不可以修改外,其他的都可以
db.testup2.update({"url":"http://www.baidu.com"},{"$inc":{"pageviews":1}});
$set:指定一个字段的值,如果不存在则创建。
$unset:移除一个字段。
$push:向已有的数组末尾插入一个元素,要是没有则创建一个新的数组。
$each:和$push配合使用可添加多个元素
$slice:和$each、$push配合使用可限制数组的大小,该值必须是负数。
$sort:和$each 配合使用,进行排序
$pop:从数组末尾(头部)删除一个元素
$push:会将匹配的所有的文档删除
$:基于位置的数组修改器,表示当前在数组中的位置
原子操作方法:findAndModify()
网友评论