ubuntu下mongodb操作部分整理

在ubuntu终端下输入mongo,可以看到自己电脑上安装的mongodb的版本。

$mongo 192.168.x.x即可进入数据库(不需要用户名和密码就能访问的数据库)

$ssh name@192.168.x.x回车就会提示输入密码,输入密码就能进入数据库。(需要用户名、密码登陆的数据库)(name 为用户名)

show dbs 显示mongodb服务器下的各个数据库列表名称

use name (name 为数据库名称)

在进入相应的数据库后,输入 show collections 即可看到该数据库下的各个文件夹(我最开始的mongodb版本为2.4.9,输入这个命令不显示数据库下的文件名称,升级到3.x后就可以了)

show collections

db.filename.find()

其中,filename为上一操作后返回的文件名称,输入此命令后可以查看文件信息。

eq:

> db.test.find()
{ "_id" : ObjectId("57be736ccf28b40888c632be"), "123123" : "哈哈哈" }
>db.test.count() 可以获取collection下的文件总数

help查看命令提示:

help
db.help()

查看当前使用的数据库:db.getName()

显示当前db状态:db.stats()

当前db版本:db.version()

查看当前db的链接机器地址:db.getMongo()

创建一个聚集集合(table):db.createCollection(“collName”, {size: 20, capped: 5, max: 100})  //创建成功会显示{“ok”:1}
//判断集合是否为定容量db.collName.isCapped()

得到指定名称的聚集集合(table):db.getCollection("account")

显示当前db所有聚集索引的状态:db.printCollectionStats()

查询之前的错误信息(即在本次与数据库的交互操作中错误的无效操作):db.getPrevError()

清除错误记录:db.resetError()

上面这些操作是我在使用的过程中用到的一些操作,亲测可行,其实还有很多操作,如对用户的管理、根据字段进行查询、修改等,但是我暂时不需要就没有尝试。上面这些操作对于了解你所要使用的数据库是很有帮助的,通过这些操作你可以清楚数据库下有什么文件,文件的字段信息等,只有了解了这些信息你才能进行下一步的数据存取。

上述内容部分参考:http://www.jb51.net/article/48217.htm

MongoDB常用操作命令大全

但是原文内容较多,故根据个人需要删除了部分操作,同时又添加了部分自己在使用过程中用到的其他操作。


利用pymongo进行mongodb数据库的部分操作:(可交互操作)

>>>from pymongo import MongoClient

>>>import gridfs

>>>client=MongoClient('192.168.x.x')

>>>db=client['dbname']  #dbname为此服务器下的某一数据库名称

>>>fs=gridfs.GridFS(db) 

>>>collection=db.test  #test为此数据库下的某一数据集名称,此操作获取该数据集

>>>collection.find_one() #这句代码获取数据集中的第一个对象数据

{u'_id': ObjectId('57be736ccf28b40888c632be'), u'123123': u'\u54c8\u54c8\u54c8'}  #此为输出结果。

>>>collection.count()  #输出该数据集下的对象总数

2341  #输出结果


Querying for More Than One Document

To get more than a single document as the result of a query we use thefind()method.find() returns aCursor instance, which allows us to iterateover all matching documents. For example, we can iterate over everydocument in theposts collection:
<span style="font-size:14px;">>>> for post in posts.find({"author": "Mike"}):
...   post
...
{u'date': datetime.datetime(...), u'text': u'My first blog post!', u'_id': ObjectId('...'), u'author': u'Mike', u'tags': [u'mongodb', u'python', u'pymongo']}
{u'date': datetime.datetime(2009, 11, 12, 11, 14), u'text': u'Another post!', u'_id': ObjectId('...'), u'author': u'Mike', u'tags': [u'bulk', u'insert']}</span>
Just like we did withfind_one(),we can pass a document tofind()to limit the returned results. Here, we get only those documents whoseauthor is “Mike”:
<span style="font-size:14px;">>>> for post in posts.find({"author": "Mike"}):
...   post
...
{u'date': datetime.datetime(...), u'text': u'My first blog post!', u'_id': ObjectId('...'), u'author': u'Mike', u'tags': [u'mongodb', u'python', u'pymongo']}
{u'date': datetime.datetime(2009, 11, 12, 11, 14), u'text': u'Another post!', u'_id': ObjectId('...'), u'author': u'Mike', u'tags': [u'bulk', u'insert']}</span>

pymongo Tutorial



补充:(部分基础知识,觉得很有必要了解)

一、文档的注意事项:

1.  键值对是有序的,如:{ "name" : "stephen", "genda" : "male" } 不等于 { "genda" : "male", "name" : "stephen" }
2.  文档信息是大小写敏感的,如:{ "name" : "stephen" } 不等于 { "Name" : "stephen" }
3.  文档信息是区分类型的,如:{ "age" : 30 } 不等于 { "age" : "30" }
4.  文档中不能出现重复键,如:{ "name" : "stephen", "name" : "liu" }

二、使用多个集合的必要性:

1.  如果把各种模式的文档存放在一个集合中,对于开发者来说是非常灾难的。因为在获取到查询结果之后,就需要手工编写代码过滤不同类型的文档了。
2.  会使查询效率降低。试想一下,假设某个模式的文档的数据量相对较少,如果仍然将其放到一个通用的大集合中,其查询效率势必会大大低于将其放到独立的集合中。
3.  在创建索引时,如果所有的文档均为同一模式,那么索引的利用率将会更加高效。

三、集合的命名注意事项:
1.  集合名不能是空字符串""。
2.  不要以system开头,这一般是为系统保留的,如system.users集合中保存了数据库的用户信息,而system.namespace集合中保留了数据库集合的信息。
3.  不要在集合名里面包含'$'字符。
4.  子集合只是一种较好的集合规划方式,如blog.posts和blog.anthurs,实际上它们和blog集合之间没有任何关系,甚至blog集合可以不存在。

四、数据库:

在同一个MongoDB服务器中可以存在多个数据库,每个不同的数据库存储在不同的文件中。又由于数据库名和文件名是绑定的,因此数据库名会有一些限制。
1.  不能是空字符""。
2.  全部小写且不超过64字节。
3.  不得含有文件名命名中的非法字符。
4.  admin数据库是管理数据库,如果某个用户位于该数据库中,他将自动继承所有数据库权限。一些特定的服务器命令也只能从这个数据库运行。
5.  local这个数据库永远不会被复制,只是用于存储限于本地单台服务器的任意集合。
6.  数据库名.集合名,表示该集合的完全限定名,其长度不要超过121自己。

来源: MongoDB教程之入门基本知识

整理的比较杂乱,但基本上都是比较常用的操作,根据个人需要整理了会用到的操作,仅供参考,如果需要更详细的操作的话,而且英语阅读能力尚可的情况下,建议直接看官网,不建议看别人写的博客,官网是写的最详细最准确的~


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值