show dbs 查看数据库
show collections 查看use中的数据库下的集合
db.collectionName.find().pretty() 查看某个集合中的文档,格式化输出
添加文档
document=({title:'mongodb2',description:'nosql',by:'tx2',url:'http',tags:['mongo','daba','nosql'],likess:111});
document2=({title:'mongodb2',description:'nosql',by:'tx2',url:'http',tags:['mongo','daba','nosql'],likes:111});
document和document2最后的likes和likess是不一样的,但都能添加成功,查询成功。我这样做是为了测试字段名是不是要相同。从结果看来是和mysql不一样了。又测试了一下没有likes,也是可以的。
每个集合都是独立的吧
更新文档
db.col.update({'title':'mongodb2'},{$set:{'title':'update'}})
可以更新成功
db.col.update({'title':'update'},{$set:{'title2':'update2'}})
title没有被更新。是在这个文档下又添加了一个title2的域(是这样叫吗)。域名不能通过这样的方式更新。
默认是更新第一条符合条件的。要更新所有符合条件的文档,就要如下
db.col.update({'title':'mongodb2'},{$set:{'title':'update'}},{multi:true})
替换整个文档数据
db.col.save({"_id" : ObjectId("590fe5f9f2502799555377b2"),"result":"all"})
删除文档
db.col.remove({'by':'tx2'})
符合条件的整个文档都被删除了
删除某个字段
db.col.update({},{$unset:{'description':''}},false,false)
db.col.find({'by':'tx','likes':100}).pretty()
满足多个条件的查询
db.col.find({$or:[{'by':'tx'},{'likes':100}]}).pretty()
多个条件满足其中一个的查询
db.col.find({"title" : {$type : 2}})
操作符匹配数据类型查询。2是string,1是double。‘likes’:100竟然能用1查询出来。还不太理解。
db.col.find({},{'title':1,_id:0,'likes':1}).limit(1).pretty()
‘title’:1,_id:0意思是显示域名为title的域,不显示域名为_id的域。limit(x),显示x条查询集合。
skip(x)跳过x条集合。sort('key':1),sort('key':-1),按域名key来升序(1)或降序(-1)
sort,skip,limit都有的情况下,无视排序,都是sort先