Mongodb入门与实践
Mac安装MongoDB
brew install mongodb
使用Homebrew成功安装MongoDB
1 | To have launchd start mongodb now and restart at login: |
Mac启动MongoDB
sudo mongod --config /usr/local/etc/mongod.conf
Mac连接MongoDB,另打开一个终端
mongo
MongoDB基本操作CRUD
创建文档
1 | > show dbs # 查看数据库列表 |
读取文档
1 | > db.blog.find() # 查看多个文档,最多显示20个,"_id"为额外添加的键 |
更新文档之文档替换
1 | > post.comments = [] |
更新文档之使用修改器
1 | > post = {"id" : 1, |
更新文档之数组修改器
$push
1 | > post = {"id" : 1, |
$each
1 | > db.blog.update({"title" : "My Blog Post"}, |
$slice
1 | > post = {"title" : "My Blog Post", |
$sort
1 | > db.blog.update({"title" : "My Blog Post"}, |
将数组作为数据集使用
$ne
1 | > users = {"admin" : ["admin1", "admin2"], |
$addToSet
1 | > users = {"username" : "bob", |
删除元素
$pop,$pull
1 | > db.users.update({"username" : "bob"}, |
基于位置的数组修改器
1 | > db.users.update({"username" : "bob"}, |
upsert
1 | > db.users.findOne() |
更新多个文档
1 | > db.users.find() |
返回被更新的文档findAndModify
1 | > db.users.find() |
删除文档
1 | > db.blog.remove({title : "My Blog Post"}) # remove将文档从数据库中永久删除,接收一个限定条件的文档作为参数,如果没有使用任何参数,会将集合内的所有文档全部删除,但不会删除集合本省,也不会删除集合的元信息,缺点是比drop删除速度慢 |
drop删除
1 | > db.blog.drop() # 比remove删除速度快,缺点是不能指定任何限定条件,整个集合和元数据都被删除了 |
查询
find简介
1 | > db.users.find() # 空的查询文档,会匹配集合的全部内容 |
查询条件
1 | > db.users.find({"score" : {"$lt" : 100}}) # $lt小于 |
OR查询
1 | > db.users.find({"score" : {"$in" : [100, 60]}}) # $in匹配多个值 |
$not
1 | > db.users.find({"score" : {"$not" : {"$in" : [60, 80]}}}) # $not用来查找那些与特定模式不匹配的文档 |
特定类型查询
null
1 | > db.users.insert({"username" : "lily", "email" : null, "score" : 80}) |
查询数组
$all
1 | > db.food.insert({"fruit" : ["apple", "banana", "peach"]}) |
$size
1 | > db.food.find({"fruit" : {"$size" : 3}}) # $size查询特定长度的数组 |
$slice操作符
1 | > db.blogs.insert({"title" : "This is my blog title", "content" : "This is my blog content", "comments" : [{"name" : "joe", "email" : "joe@example.com", "content" : "nice post."}, {"name" : "bob", "email" : "bob@example.com", "content" : "good post."}, {"name" : "lucy", "email" : "lucy@example.com", "content" : "beautiful post."}]}) |
返回一个匹配的数组元素
1 | > db.blogs.find({"comments.name" : "bob"}, {"comments.$" : 1}) # 使用$操作符返回与查询条件相匹配的任意一个数组元素,注意,这样只会返回第一个匹配的文档。 |
数组和范围查询的相互作用