1. 详细使用网址:http://blog.csdn.net/xinghebuluo/article/details/7050811
  2. MongoDB基本使用
  3. 成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作。
  4. 输入help可以看到基本操作命令:
  5. show dbs:显示数据库列表
  6. show collections:显示当前数据库中的集合(类似关系数据库中的表)
  7. show users:显示用户
  8. use <db name>:切换当前数据库,这和MS-SQL里面的意思一样
  9. db.help():显示数据库操作命令,里面有很多的命令
  10. db.foo.help():显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合,并非真正意义上的命令
  11. db.foo.find():对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据)
  12. db.foo.find( { a : } ):对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1
  13. MongoDB没有创建数据库的命令,但有类似的命令。
  14. 如:如果你想创建一个“myTest”的数据库,先运行use myTest命令,之后就做一些操作(如:db.createCollection('user')),这样就可以创建一个名叫“myTest”的数据库。
  15. 数据库常用命令
  16. Help查看命令提示
  17. help
  18. db.help();
  19. db.yourColl.help();
  20. db.youColl.find().help();
  21. rs.help();
  22. 、切换/创建数据库
  23. use yourDB; 当创建一个集合(table)的时候会自动创建当前数据库
  24. 、查询所有数据库
  25. show dbs;
  26. 、删除当前使用数据库
  27. db.dropDatabase();
  28. 、从指定主机上克隆数据库
  29. db.cloneDatabase(“127.0.0.1”); 将指定机器上的数据库的数据克隆到当前数据库
  30. 、从指定的机器上复制指定数据库数据到某个数据库
  31. db.copyDatabase("mydb", "temp", "127.0.0.1");将本机的mydb的数据复制到temp数据库中
  32. 、修复当前数据库
  33. db.repairDatabase();
  34. 、查看当前使用的数据库
  35. db.getName();
  36. db; dbgetName方法是一样的效果,都可以查询当前使用的数据库
  37. 、显示当前db状态
  38. db.stats();
  39. 、当前db版本
  40. db.version();
  41. 、查看当前db的链接机器地址
  42. db.getMongo();
  43. Collection聚集集合
  44. 、创建一个聚集集合(table
  45. db.createCollection(“collName”, {size: , capped: , max: });//创建成功会显示{“ok”:1}
  46. //判断集合是否为定容量db.collName.isCapped();
  47. 、得到指定名称的聚集集合(table
  48. db.getCollection("account");
  49. 、得到当前db的所有聚集集合
  50. db.getCollectionNames();
  51. 、显示当前db所有聚集索引的状态
  52. db.printCollectionStats();
  53. 用户相关
  54. 、添加一个用户
  55. db.addUser("name");
  56. db.addUser("userName", "pwd123", true); 添加用户、设置密码、是否只读
  57. 、数据库认证、安全模式
  58. db.auth("userName", "");
  59. 、显示当前所有用户
  60. show users;
  61. 、删除用户
  62. db.removeUser("userName");
  63. 其他
  64. 、查询之前的错误信息
  65. db.getPrevError();
  66. 、清除错误记录
  67. db.resetError();
  68. 查看聚集集合基本信息
  69. 、查看帮助 db.yourColl.help();
  70. 、查询当前集合的数据条数 db.yourColl.count();
  71. 、查看数据空间大小 db.userInfo.dataSize();
  72. 、得到当前聚集集合所在的db db.userInfo.getDB();
  73. 、得到当前聚集的状态 db.userInfo.stats();
  74. 、得到聚集集合总大小 db.userInfo.totalSize();
  75. 、聚集集合储存空间大小 db.userInfo.storageSize();
  76. Shard版本信息 db.userInfo.getShardVersion()
  77. 、聚集集合重命名 db.userInfo.renameCollection("users"); userInfo重命名为users
  78. 、删除当前聚集集合 db.userInfo.drop();
  79. 聚集集合查询
  80. 、查询所有记录
  81. db.userInfo.find();
  82. 相当于:select* from userInfo;
  83. 默认每页显示20条记录,当显示不下的情况下,可以用it迭代命令查询下一页数据。注意:键入it命令不能带“;”
  84. 但是你可以设置每页显示数据的大小,用DBQuery.shellBatchSize= ;这样每页就显示50条记录了。
  85.  
  86. 、查询去掉后的当前聚集集合中的某列的重复数据
  87. db.userInfo.distinct("name");
  88. 会过滤掉name中的相同数据
  89. 相当于:select distict name from userInfo;
  90.  
  91. 、查询age = 22的记录
  92. db.userInfo.find({"age": });
  93. 相当于: select * from userInfo where age = ;
  94.  
  95. 、查询age > 22的记录
  96. db.userInfo.find({age: {$gt: }});
  97. 相当于:select * from userInfo where age >;
  98.  
  99. 、查询age < 22的记录
  100. db.userInfo.find({age: {$lt: }});
  101. 相当于:select * from userInfo where age <;
  102.  
  103. 、查询age >= 25的记录
  104. db.userInfo.find({age: {$gte: }});
  105. 相当于:select * from userInfo where age >= ;
  106.  
  107. 、查询age <= 25的记录
  108. db.userInfo.find({age: {$lte: }});
  109.  
  110. 、查询age >= 并且 age <=
  111. db.userInfo.find({age: {$gte: , $lte: }});
  112.  
  113. 、查询name中包含 mongo的数据
  114. db.userInfo.find({name: /mongo/});
  115. //相当于%%
  116. select * from userInfo where name like ‘%mongo%’;
  117.  
  118. 、查询name中以mongo开头的
  119. db.userInfo.find({name: /^mongo/});
  120. select * from userInfo where name like mongo%’;
  121.  
  122. 、查询指定列nameage数据
  123. db.userInfo.find({}, {name: , age: });
  124. 相当于:select name, age from userInfo;
  125. 当然name也可以用truefalse,当用ture的情况下河name:1效果一样,如果用false就是排除name,显示name以外的列信息。
  126.  
  127. 、查询指定列nameage数据, age >
  128. db.userInfo.find({age: {$gt: }}, {name: , age: });
  129. 相当于:select name, age from userInfo where age >;
  130.  
  131. 、按照年龄排序
  132. 升序:db.userInfo.find().sort({age: });
  133. 降序:db.userInfo.find().sort({age: -});
  134.  
  135. 、查询name = zhangsan, age = 22的数据
  136. db.userInfo.find({name: 'zhangsan', age: });
  137. 相当于:select * from userInfo where name = zhangsan and age = ‘’;
  138.  
  139. 、查询前5条数据
  140. db.userInfo.find().limit();
  141. 相当于:selecttop * from userInfo;
  142.  
  143. 、查询10条以后的数据
  144. db.userInfo.find().skip();
  145. 相当于:select * from userInfo where id not in (
  146. selecttop * from userInfo
  147. );
  148.  
  149. 、查询在5-10之间的数据
  150. db.userInfo.find().limit().skip();
  151. 可用于分页,limitpageSizeskip是第几页*pageSize
  152.  
  153. or 查询
  154. db.userInfo.find({$or: [{age: }, {age: }]});
  155. 相当于:select * from userInfo where age = or age = ;
  156.  
  157. 、查询第一条数据
  158. db.userInfo.findOne();
  159. 相当于:selecttop * from userInfo;
  160. db.userInfo.find().limit();
  161.  
  162. 、查询某个结果集的记录条数
  163. db.userInfo.find({age: {$gte: }}).count();
  164. 相当于:select count(*) from userInfo where age >= ;
  165.  
  166. 、按照某列进行排序
  167. db.userInfo.find({sex: {$exists: true}}).count();
  168. 相当于:select count(sex) from userInfo;
  169. 索引
  170. 、创建索引
  171. db.userInfo.ensureIndex({name: });
  172. db.userInfo.ensureIndex({name: , ts: -});
  173.  
  174. 、查询当前聚集集合所有索引
  175. db.userInfo.getIndexes();
  176.  
  177. 、查看总索引记录大小
  178. db.userInfo.totalIndexSize();
  179.  
  180. 、读取当前集合的所有index信息
  181. db.users.reIndex();
  182.  
  183. 、删除指定索引
  184. db.users.dropIndex("name_1");
  185.  
  186. 、删除所有索引索引
  187. db.users.dropIndexes();
  188. 修改、添加、删除集合数据
  189. 、添加
  190. db.users.save({name: zhangsan’, age: , sex: true});
  191. 添加的数据的数据列,没有固定,根据添加的数据为准
  192.  
  193. 、修改
  194. db.users.update({age: }, {$set: {name: 'changeName'}}, false, true);
  195. 相当于:update users set name = changeName where age = ;
  196.  
  197. db.users.update({name: 'Lisi'}, {$inc: {age: }}, false, true);
  198. 相当于:update users set age = age + where name = Lisi’;
  199.  
  200. db.users.update({name: 'Lisi'}, {$inc: {age: }, $set: {name: 'hoho'}}, false, true);
  201. 相当于:update users set age = age + , name = hoho where name = Lisi’;
  202.  
  203. 、删除
  204. db.users.remove({age: });
  205.  
  206. 、查询修改删除
  207. db.users.findAndModify({
  208. query: {age: {$gte: }},
  209. sort: {age: -},
  210. update: {$set: {name: 'a2'}, $inc: {age: }},
  211. remove: true
  212. });
  213.  
  214. db.runCommand({ findandmodify : "users",
  215. query: {age: {$gte: }},
  216. sort: {age: -},
  217. update: {$set: {name: 'a2'}, $inc: {age: }},
  218. remove: true
  219. });
  220. update remove 其中一个是必须的参数; 其他参数可选。
  221. 参数 详解 默认值
  222. query 查询过滤条件 {}
  223. sort 如果多个文档符合查询过滤条件,将以该参数指定的排列方式选择出排在首位的对象,该对象将被操作 {}
  224. remove 若为true,被选中对象将在返回前被删除 N/A
  225. update 一个 修改器对象
  226. N/A
  227. new 若为true,将返回修改后的对象而不是原始对象。在删除操作中,该参数被忽略。 false
  228. fields 参见Retrieving a Subset of Fields (1.5.+)
  229. All fields
  230. upsert 创建新对象若查询结果为空。 示例 (1.5.+)
  231. false
  232. 语句块操作
  233. 、简单Hello World
  234. print("Hello World!");
  235. 这种写法调用了print函数,和直接写入"Hello World!"的效果是一样的;
  236.  
  237. 、将一个对象转换成json
  238. tojson(new Object());
  239. tojson(new Object('a'));
  240.  
  241. 、循环添加数据
  242. > for (var i = ; i < ; i++) {
  243. ... db.users.save({name: "u_" + i, age: + i, sex: i % });
  244. ... };
  245. 这样就循环添加了30条数据,同样也可以省略括号的写法
  246. > for (var i = ; i < ; i++) db.users.save({name: "u_" + i, age: + i, sex: i % });
  247. 也是可以的,当你用db.users.find()查询的时候,显示多条数据而无法一页显示的情况下,可以用it查看下一页的信息;
  248.  
  249. find 游标查询
  250. >var cursor = db.users.find();
  251. > while (cursor.hasNext()) {
  252. printjson(cursor.next());
  253. }
  254. 这样就查询所有的users信息,同样可以这样写
  255. var cursor = db.users.find();
  256. while (cursor.hasNext()) { printjson(cursor.next); }
  257. 同样可以省略{}号
  258.  
  259. forEach迭代循环
  260. db.users.find().forEach(printjson);
  261. forEach中必须传递一个函数来处理每条迭代的数据信息
  262.  
  263. 、将find游标当数组处理
  264. var cursor = db.users.find();
  265. cursor[];
  266. 取得下标索引为4的那条数据
  267. 既然可以当做数组处理,那么就可以获得它的长度:cursor.length();或者cursor.count();
  268. 那样我们也可以用循环显示数据
  269. for (var i = , len = c.length(); i < len; i++) printjson(c[i]);
  270.  
  271. 、将find游标转换成数组
  272. > var arr = db.users.find().toArray();
  273. > printjson(arr[]);
  274. toArray方法将其转换为数组
  275.  
  276. 、定制我们自己的查询结果
  277. 只显示age <= 28的并且只显示age这列数据
  278. db.users.find({age: {$lte: }}, {age: }).forEach(printjson);
  279. db.users.find({age: {$lte: }}, {age: true}).forEach(printjson);
  280. 排除age的列
  281. db.users.find({age: {$lte: }}, {age: false}).forEach(printjson);
  282.  
  283. forEach传递函数显示信息
  284. db.things.find({x:}).forEach(function(x) {print(tojson(x));});
  285. 分类: MongoDB
  286. 绿色通道:好文要顶关注我收藏该文与我联系
  287. TankMa
  288. 关注 -
  289. 粉丝 -
  290. +加关注
  291.  
  292. (请您对文章做出评价)
  293. « 上一篇:MongoDB安装与配置

mongo操作的更多相关文章

  1. Python Mongo操作

    # -*- coding: utf-8 -*- ''' Python Mongo操作Demo Done: ''' from pymongo import MongoClient conn = None ...

  2. mongo操作及相关资料

    mongo操作 find方法 db.collection_name.find(); 查询所有的结果: select * from users; db.users.find(); 指定返回那些列(键): ...

  3. php对mongo操作问题

    最近由于业务需求,需要使用php对mongo做一些操作,关于mongodb,选择的版本是:MongoDB shell version: 2.0.6 MongoDB是一种文档导向数据库管理系统,由C++ ...

  4. lavarel mongo 操作

    本人使用环境   Ubuntu 18.04 LTS php7.2 lavarel5.5 mongodb的安装 mongodb 服务的安装   这个链接中有最全面最新的安装文档 https://docs ...

  5. mongo 操作小结

    这里总结一下mongo常用操作语句,分享给大家和我自己~ 打印系统,数据库,集合的信息 db.stats()                                    打印数据库状态 db ...

  6. mongo 操作

    1.链接mongo /path_to_mongo/bin/mongo MongoDB shell version: connecting to: test > use logs switched ...

  7. mongo操作备忘

    #查看collection内 某个字段条目数 db.dictionary_system.find({"name":"xxx"}).count() #清空某个co ...

  8. mongo操作图片储存

    python 将图片存入mongodb,读取图片,gridfs模块原创A873054267 最后发布于2018-11-06 15:49:30 阅读数 2785 收藏展开导入图片引入模块,其中gridf ...

  9. Mongo——C#操作

    自己练手写了一个MongoDb的泛型类,顺便把一些常用命令整理了一下,做个记录: /// <summary> /// Mongo操作类. /// </summary> /// ...

随机推荐

  1. CSS选择器的权重与优先规则

    权重顺序 “important > 内联 > ID > 类 > 标签 | 伪类 | 属性选择 > 伪对象 > 继承 > 通配符”.   原文:http://w ...

  2. 泛型类型的协变(covariant)和逆变

    官网:http://msdn.microsoft.com/zh-cn/library/dd799517.aspx 原文链接:http://book.51cto.com/art/201112/30857 ...

  3. GitLab/Git在AndroidStudio上的使用(转)

    1.在AndroidStudio上的配置GitLab 1)首先先将gitlab上的开发项目clone到本地(可以使用命令行或者管理工具,具体操作在GitLab中已经涉及,这里不再赘述),然后导入到An ...

  4. C# 【无法修改XX返回值,因为它不是变量】

    using UnityEngine; using System.Collections; using System.Xml.Linq; using UnityEditor; using System; ...

  5. 命令行参数(argc, argv)

    每个C语言程序都必须有一个称为main()的函数,作为程序启动的起点.当执行程序时,命令行参数(command-line argument)(由shell逐一解析)通过两个入参提供给main()函数. ...

  6. ntp时间同步服务器配置

    ntp同步的两种方式:1.使用ntpdate命令直接同步 2.使用NTPD服务平滑同步直接同步方式的缺陷:会导致已经做的定时任务再做一遍.平滑同步每次同步时间的偏移量不会太陡,根据偏移量,均方差等值每 ...

  7. 微信开放平台,微信登陆第三方网站 提示redirect_uri 参数错误

    在微信开放平台上我填写的回调域是:bbs.qiaoshisui.com/LoginApi/WeiXinCallBack,我构造的链接是:https://open.weixin.qq.com/conne ...

  8. 联想Y50p预装win8系统改为win7

    &1 修改OS Optimized Defaults 开机,按[F2]进入BIOS设置,按右方向键选择到EXIT上面,按下方向键选择OS Optimized Defaults,回车,将Win8 ...

  9. JS 之DOM range对象

    DOM范围 DOM中的range对象是DOM2中新定义的接口.通过这个对象可以选择文档中的某个区域,而不必考虑节点的界限. 创建范围 document.createRange()创建一个范围,这个范围 ...

  10. Caffe学习系列(9):运行caffe自带的两个简单例子

    为了程序的简洁,在caffe中是不带练习数据的,因此需要自己去下载.但在caffe根目录下的data文件夹里,作者已经为我们编写好了下载数据的脚本文件,我们只需要联网,运行这些脚本文件就行了. 注意: ...