MongoDB学习笔记

浏览:
字体:
发布时间:2013-12-15 22:18:51
来源:

基本概念:

1、文档 --> 对应关系数据库的行,也就是一条记录。它比关系数据库的行的功能要强大,更像是是某个具体的对象。文档以一种Map的形式展现出来,当然value可以是任意的类型,也可以继续是一个文档(递归的定义)

2、集合 --> 对应关系数据库的表。但是它又是无模式的,即文档不要求一致。

基本操作:

1、显示数据库show dbs

2、创建数据库:use yourDateBaseName 这就创建了一个数据库。不过你用show dbs,并不能显示yourDataBaseName,因为这个数据库没有任何操作。所以如果你直接离开,则本数据库会被废除。如果你插入一条记录,此时就可以通过show dbs看到对应的数据库如下:record = {"name" : "wang", "age" : 20, "password" : "123456"}db.yiyou.you_upload_photo.insert(record)这时使用show dbs就可以看到你的数据库了

3、显示数据库show collections。默认的包含system.indexes 表

4、创建集合:因为mongodb中集合是无模式的,不像传统的关系型数据库是需要预先申明表包含哪些字段并且定义字段的属性。虽有无需预先定义。使用的时候直接插入。可以见上面的例子。

5、删除集合db.yourDatabaseName.yourCollectionName.drop()

6、将文档插入集合record = {"name" : "wang", "age" : 20, "password" : "123456"}db.yourDatabaseName.yourCollectionName.insert(record)

7、删除集合中的文档db.yourDatabaseName,yourCollectionName.remove()会清空此集合中的所有文档

8、文档更新Mongo中的更新有两种一种是:用新的文档去替换旧的文档。【就是通过条件先将满足条件的选出来该文档,修改完之后替换旧的文档】,个人不喜欢这种操作,违背了原子性啊。另外一种:采用Mongo的修改器对文档进行修改。修改器列表:

8.1、“$set”修改器:用了指定一个健的值。如果健不存在,就创建它。 Example:db.myMongodb.user.update({"_id":ObjectId("4ed373c46d375f1a1960ed07")}, {"$set" : {"sex" : "male"}}) “$unset”删除某个健 Example: db.myMongodb.user.update({"_id":ObjectId("4ed373c46d375f1a1960ed07")}, {"$unset" : {"sex" : 1}})

8.2、“$inc”修改器用了增加已有的健的值,或者在键不存在的时候创建一个健。Example: db.myMongodb.user.update({"_id":ObjectId("4ed373c46d375f1a1960ed07")}, {"$inc" : {"age" : 1}}) Tips: $inc 只能用于整数,长整数和双精度浮点数。其他数会导致失败。

8.3、“$push”会向已有的数组末尾加入一个元素,要是没有就会创建一个新的数组。Example:db.myMongodb.user.update({"_id":ObjectId("4ed373c46d375f1a1960ed07")}, {$push : {"comments" : "this is my comments"}})

8.4、“$ne”not equal判定器,【判定给定的属性不等于给定值】Example:db.myMongodb.user.update({"comments" : {"$ne" : "this is comments"},{$push : {"comments" : "your comments"}})

8.5、“$addToSet”在不重复的情况下添加Example:db.myMongodb.user.update({"_id":ObjectId("4ed373c46d375f1a1960ed07")},{"$addToSet" : {"comments" : "your comments"}})

8.6、“$each”数组遍历修改器Example:db.myMongodb.user.update({"_id":ObjectId("4ed373c46d375f1a1960ed07")},{"$addToSet" : {"comments" : {"$each" : ["a commnet", "b comment"]}}})

8.7、“$pop”修改器,从数组中删除任何一端删除元素Example:{$pop : {key : 1}}从数组末尾删除一个元素{$pop : {key : -1}}从数组头部删除

8.8、数组定位修改器Example:db.myMongodb.user.update({"comments.author" : "john"},{"$set" : {"comments.$.author" : "jim"}})定位到第一个john的第一条评论

9、特殊的更新or插入 upsertUpsert的特点是如果存在就更新,如果不存在就根据update的条件插入一条新的记录

10、批量更新需要设置update的第四个参数为true,否则默认更新第一个匹配的文档

11、得到上一条命令的执行结果 db.runCommand({getLastError : 1})
Mongodb 查询操作

1、查询全部集合db.myMongodb.post.find() 如果是console的话,默认显示20条记录

2、返回指定的键db.myMongodb.post.find({}, {"foo" : 1, "baz" : 1})返回键foo和健baz,同时默认返回_id键的值

3、指定不返回的键db.myMongodb.post.find({}, {"foo" : 0})返回除foo之外的其他键

4、判定条件查询a) “$lt” 小于b) “$lte”小于等于c) “$gt”大于d) “$gte”大于等于e) “$ne”不等于db.myMongodb.user.find({"age" : {"$gte" : 18, "$lte" : 30}})

5、其他条件查询a) “$in” :是否在某一个集合的查询db.myMongodb.user.find({"age" : {"$in" : [17,18,19]}})b) “$nin”:与in相对应,不处于某个结合的文档c) “$or”:多条件查询db.myMongodb.user.find({"$or" : [{"age" : 17}, {"age" : 18}]})d) “$not”非的情况下使用。其他条件可以基于它e) “$mod”取模查询f) “$null”可以匹配值为null的字段,同时也能匹配键不存在的文档如果同时要判定键存在,需要加上"$exists" 判定

6、查询数组a) “$all” 通过多个元素匹配数组db.myMongodb.food.find({"fruit" : {"$all" : ["apple", "oracle"]}})b) 数组下标匹配db.myMongodb.food.find({"fruit.2" : "peach"})c) "$size"数组长度匹配 db.myMongodb.food.find("fruit" : {"$size" : 3})

7、"$slice"指定返回集合的个数db.myMongodb.posts.find(criteria, {"$silce" : n})n = 10 返回前10条记录n = -10 返回后10条记录n = [23, 10] 返回从23条记录开始的10条记录,感觉应该可以做分页

8、采用点表示法查询内嵌文档(推荐)db.myMongodb.find({"name.first" : "Wang", "name.last" : "Hai"})

9、采用分层的方式查询db.myMongodb.find({"name" : {"first" : "Wang, "last" : "Hai""}})

10、$where查询$where查询非常强大,它可以添加js的函数实现高级的查询功能。基本样式如下:db.myMongodb.find({"$where" : function() {}})如果function返回true,该记录就返回。否则就不返回。

参考推荐:

mongodb 常用命令

MongoDB SQL语法对比

MongoDB 客户端 MongoVue

>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2024 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();