您的位置:首页 > 数据库 > Mongodb

mongodb基础命令及基本知识

2013-07-27 11:08 363 查看

先搞清楚集合,文档,数据库的关系。



转载自:///article/1652580.html

不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基本的概念是文档、集合、数据库,下面我们挨个介绍。

文档:

文档是mongodb中的最核心的概念,是其核心单元,我们可以将文档类比成关系型数据库中的每一行数据。多个键及其关联的值有序的放置在一起就是文档。在mongodb中使用一种类json的bson存储数据。bson数据可以理解为在json的基础上添加了一些json中没有的数据类型。如果我们会json,那么bson我们就已经掌握了一半了,至于新添加的数据类型后面我会介绍。文档例子如下:

[html] view
plaincopy

{“name":"mengxiangyue","sex":"nan"}

对于文档是有一些限制的:有序、区分大小写的,所以下面的两个文档是与上面不同的

[html] view
plaincopy

{”sex“:"nan","name":"mengxiangyue"}

{"Name":"mengxiangyue","sex":"nan"}

集合:

集合就是一组文档的组合。如果将文档类比成数据库中的行,那么集合就可以类比成数据库的表。

在mongodb中的集合是无模式的,也就是说集合中存储的文档的结构可以是不同的,比如下面的两个文档可以同时存入到一个集合中:

[html] view
plaincopy

{"name":"mengxiangyue"}

{"Name":"mengxiangyue","sex":"nan"}

这个是与关系型数据库不同,在关系型数据中所有的行的字段都是相同的。不能像mongodb中这样可以不相同。虽然mongodb的集合是无模式的,但是mongodb的官方还是建议所有的文档的结构都是相同的,这样处理起来比较方便。

数据库:

在mongodb中的数据库的概念与关系型的数据库中的数据库的概念基本相同。在mongodb中的数据库是多个集合的组合。同样一个mongodb中可以建立多个数据库,这些数据库也是相互独立的,也可以独立进行用户验证。

在给数据库起名的时候有几个是保留的admin、local、config。这几个数据库是mongodb的保留数据库。

admin数据库,是一个root数据库,在这个数据库中添加用户,该用户将继承所有的数据库的权限,以后讲权限的时候会用到。

local数据库,这个数据库不会被复制,只存储本地服务器才能访问的数据库。以后再分片的时候会降到。

config数据库用于保存分片的相关信息。

可能有些地方写的也不对,只能通过查资料尽量写的正确,如果哪里错了,还请大虾指出。


基本操作

敲入help命令:

show dbs show database names #显示当前总共有哪些数据库

show collections show collections in current database #显示当前数据库的所有集合

show users show users in current database #显示用户

show profile show most recent system.profile entries with time >= 1ms

show logs show the accessible logger names #现实所有的log文档

show log [name] prints out the last segment of log in memory, 'global' is default#显示名字为name的log文档的信息

use <db_name> set current database #使用db_name此数据库

db.foo.find() list objects in collection foo #显示数据库.集合....下所有文档

db.foo.find( { a : 1 } ) list objects in foo where a == 1 #显示数据库.集合....下所有符合条件的a=1的文档

it result of the last line evaluated; use to further iterate

DBQuery.shellBatchSize = x set default number of items to display on shell

exit quit the mongo shell #退出

遇到的问题:

1.Sat Jul 27 10:43:29 SyntaxError: missing ; before statement (shell):1

语法错误,有可能是忘记了函数的方法要加()也有可能是忘记了加 “,”等等

2.> foo.insert(test)

Sat Jul 27 10:23:28 ReferenceError: foo is not defined (shell):1

foo是我定义的数据库名字,所以不能直接使用数据库执行insert()方法,只有集合才执行更删改查文档的方法。

3.> foo['bar'].insert({'name': 'hhx'})

Sat Jul 27 11:11:34 ReferenceError: foo is not defined (shell):1

当前处于foo数据库中(命令db),使用数据库名字的地方都用db统一代替,所以正确的使用方法是db['bar'].insert({'name': 'hhx'})

学习mongodb,网址:http://special.csdn.net/mongodb/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: