2.1.2数据库、集合和文档
MongoDB的集合与关系型数据库中的表类似。MongoDB把集合分别存储在不同的数据库中。与传统的SQL数据库不同,MongoDB的数据库只区分集合的命名空间。要查询MongoDB数据库,需要知道存储文档数据的数据库和集合的名字。如果开始没有指定数据库,shell会选择默认的test数据库。选择数据库
> use tutorial
2.1.3写入和查询
写入
> db.users.insert({username:"smith"})
查询
db.users.find();
db.users.find({username:"jones});
db.users.find({ _id:"1",username:"jones"});
db.users.find({ $or:[{username:"smith"},{username:"jones"}]});
db.users.find({ $and:[{_id:"1"},{username:"jones"}]})
2.1.4更新文档
更新单个文档
db.users.update({username:"smith"},{$set:{country:"Canada"}})
删除字段
db.user.update({username:"smith"},{$unset:{country:1}})
替换更新文档
db.users.update({username:"smith"},{country:"Japen"})
数据变化:{ "_id" : ObjectId("5fd9bec6bb0873560ed4ffd4"), "username" : "smith", "country" : "Canada" }
--
{ "_id" : ObjectId("5fd9c7debb0873560ed4ffd4"), "country" : "Japen" }
id相同,但是数据已经被替换为新的文档。当确定是新增或者修改数据而不是替换整个文档时,应该使用$set操作符
更新复杂数据
db.users.update( {username:"smith"},
{$set:{
favories:{
cities:["tokyo","hangzhou"],
movies:["Casablanca"]
}
}})
db.users.update( {username:"jones"},
{$set:{
favories:{
movies:["Casablanca","your name"]
}
}})
高级更新
db.users.update( {"favories.movies":"Casablanca"},
{$addToSet:{"favories.movies":"The Maltese Falcon"}},
false,
true)
第一个参数是查询条件。第二个参数使用$addToSet添加The Maltese Falcon到列表中。第三个参数false,控制是否允许upsert。这个命令告诉更新操作,当一个文档不存在的时候是否插入它,这取决于更新操作是操作符更新还是替换更新。第四个参数true,表示是否是多个更新。默认情况下,MongoDB更新只针对第一个匹配的文档。如果想更新所有匹配的文档,就必须显示指定这个参数。$addToSet和$push
这两个命令都是往数组中添加数据,但是$addToSet是唯一的,阻止了重复的数据。2.1.5删除数据
删除数据
db.users.remove({"favories.cities":"hanzhou"})
db.users.drop()
remove操作不会删除集合,只会删除集合中某个文档。我们可以把它和SQL中的delete命令进行类比。如果要删除集合和附带的索引数据,可以使用drop方法。
来自为知笔记(Wiz)