- 创建数据库:use testdb
- 创建集合
- 固定集合:需要指定size。比如:
db.createCollection("mycol",{capped:true,autoIndexId:true,size:6142800,max:10000})
表示创建名为mycol的固定集合,以optionId作为索引,集合空间大小为6142800KB,最多存储10000个文档。
- 直接插入数据,自动创建集合。
db.mycol.insert(name:"ljs_coding")
3.查看集合:show collections
4.删除集合:db.mycol.drop(),返回true表示删除成功
5.插入文档:
- 直接插入数据:db.mycol.insert({name:"wust",password:"zz",location:"wuhan"})
- 先定义变量再插入:
document=({name:"wust",password:"zz",location:"wuhan"});
db.mycol.insert(document)
注意:此处定义有小括号有分号。
6.更新文档:
- update()方法
<query>相当于where,<update>相当于set,upsert控制无对应记录时是否插入,multi控制是否多条更新,false表示只更新符合条件的第一条记录。writeConcern控制抛出异常的级别。
比如:db.mycol.update({name:"wust"},{$set:{password:"hh"}},false,true)将所有name为"wust"的记录中password都改为"hh"。
db.mycol.update({name:"wust"},{$set:{password:"zz"}},true,true),由于此时已有name为"wust"的记录,所以不会增加,结果为将所有记录的password改为"zz"
db.mycol.update({name:"hust"},{$set:{password:"zz"}},true,true),由于此时没有name为"hust"的记录,所以新增一条。
注意:3.2版本之后提供updateOne()和updateMany()方法删除单条和多条
- save()方法
用传入的文档替换已有的文档。
7.删除文档:deleteOne()和deleteMany()
比如:db.mycol.deleteOne({name:"wust"})和db.mycol.deleteMany({name:"wust"})
8.查看文档:findOne()和find()
- find().pretty()以格式化数据返回所有文档,findOne()不包括该方法。
- 条件操作符:$lt,$lte,$gt,$gte,$ne,根据英文缩写理解,不加以赘述。
比如:db.mycol.find({count:{$lt:10}}).pretty()格式化返回count<10的所有记录。
- AND和OR
比如: db.mycol.find({password:"zz",$or:[{count:{$lt:0.0}},{count:{$gt:3.0}}]})返回的是password为"zz"且count<0或>3的所有记录。
注意:一定要检查大括号匹配,如果写成了{password:"zz"},{$or:[{count:{$lt:0.0}},{count:{$gt:3.0}}]}就不是一条查询语句了,查询出的是password为zz的所有记录,后面的限制条件失去作用,而且返回的也并非所有属性,测试时只返回了_Id。
上图也是同样的错误,所以识别成了projection,都是粗心的小错误,注意避免。
- projection参数使用方法(限制返回哪些属性),下图来自菜鸟教程。
db.collection.find(query, {title: 1, by: 1}) // inclusion模式 指定返回的键,不返回其他键 db.collection.find(query, {title: 0, by: 0}) // exclusion模式 指定不返回的键,返回其他键
db.collection.find(query, {_id:0, title: 1, by: 1}) // 正确
querydb.collection.find({}, {title: 1})
最后一种是不指定查询条件的情况,需要指定projection。