Note:mongodb存储的是文档,且文档是json格式的对象,所以增删改查都必须是json格式对象。
1、增加数据,语法: db.collectionName.isnert(document)。
#不指定文档的id,数据库会默认分配一个随机id db.user.insert({name:‘zhaos‘,age:23,sex:‘f‘}); #指定文档的id db.user.insert({_id:5,name:‘zhaos‘,age:23,sex:‘f‘}); #增加单个文档 db.user.insert({_id:6,name:‘zhaos‘,age:23,sex:‘f‘}); #增加多个文档 db.user.insert([{_id:2,name:‘zhangs‘,age:21,sex:‘m‘},{_id:3,name:‘wangw‘,age:22,sex:‘m‘},{_id:4,name:‘zhaos‘,age:23,sex:‘f‘}]);
注意,这里解释下自动生成的id,MongoDB采用了一个ObjectId的类型来做主键,ObjectId是一个12字节的 BSON 类型字符串,按照字节顺序,依次代表:
4字节:UNIX时间戳 3字节:表示运行MongoDB的机器 2字节:表示生成此_id的进程 3字节:由一个随机数开始的计数器生成的值
2、删除数据,语法: db.collection.remove(查询表达式, 选项)。选项是指需要删除的文档数,{0/1},默认是0,删除全部文档。
#将所有_id=7的文档删除 db.user.remove({_id:7}) #将gender:‘m‘的所有文档删除 db.user.remove({gender:‘m‘}) #只删除一个gender:‘m‘的文档,num是指删除的文档数 db.user.remove({gender:‘m‘,1})
3、修改数据,语法: db.collection.update(查询表达式,新值);
#从结果可以看出,这只是在替换一个文档,并非修改一个文档字段
> db.user.update({name:‘zhangs‘},{name:‘liul‘})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.user.find();
{ "_id" : 2, "name" : "liul" }
#修改一个文档的字段,必须使用$set:{属性:‘值‘}
> db.user.update({name:‘zhaos‘},{$set:{name:‘kongkong‘}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.user.find();
{ "_id" : 6, "name" : "kongkong", "age" : 23, "sex" : "f" }
修改时的赋值表达式
$set 修改某列的值
db.user.update({name:‘zhaos‘},{$set:{name:‘kongkong‘}})
$unset 删除某个列
eg:db.user.update({name:‘kongkong‘},{$unset:{name:‘kongkong‘}})
$rename 重命名某个列
eg:db.user.update({_id:6},{$rename:{sex:‘gender‘}})
eg:db.user.update({},{$rename:{‘sex‘:‘gender‘}},{multi:true})
$inc 增长某个列
eg:db.user.update({_id:6},{$inc:{age:2}})
$setOnInsert 当upsert为true时,并且发生了insert操作时,可以补充的字段.
eq:db.user.update({_id:7},{$setOnInsert:{age:5,gender:‘f‘}},{upsert:true})
4、查找数据,语法: db.collection.find(查询表达式,查询的列)。
#查询一个表中的所有文档 db.user.find() #查询特定属性的文档 db.user.find({_id:3}) #查询所有文档,显示gender列,不显示id db.user.find({},{gender:1,_id:0}) #查询所有gender:‘m‘的文档,显示gender列,age列,不显示id db.user.find({gender:‘m‘},{gender:1,_id:0,age:1})
5、高级查询知识点。
#not equal 不等于 $ne ---> != 查询表达式 #查询age不等于25的文档 db.user.find({age:{$ne:25}}) #$nin --> not in #查询age为20和25的文档 db.user.find({age:{$nin:[20,25]}}) #$all 语法: {field:{$all:[v1,v2..]}} 是指取出 field列是一个数组,且至少包含 v1,v2值 db.user.find({age:{$all:[30]}}) $exists 语法: {field:{$exists:1}} 作用: 查询出含有field字段的文档 #查询含有age列的文档 db.user.find({age:{$exists:1}}) $nor {$nor,[条件1,条件2]} 是指所有条件都不满足的文档为真返回 #查询所有age不为30,gender不为f的文档 db.user.find({$nor:[{age:30},{gender:‘f‘}]}) 正则表达式查询 #查询所有以name:yang开头的文档 /patern/ db.user.find({name:/yang*/}) #查询所有以name:zhao开头的文档,且不区分大小写 /patern/i db.user.find({name:/zhao/i})
原文地址:https://www.cnblogs.com/ywjfx/p/10129007.html