MongoDB之开始
本教程介绍了基本的数据库操作使用mongo shell。
MongoDB是一个标准的一部分,提供了一个完整的MongoDB分布JavaScript环境有一个完整的访问JavaScript语言和所有标准功能以及一个完整的数据库接口MongoDB。MongoDB支持Windows和提供了一个Windows分布具有相同操作。的指示安装MongoDB和启动数据库服务器,看到合适的安装文档。
好吧。假使你已经把安装好了。然后data和log也全部通过cmd搞定了。
那么好吧,启动服务。
因为我的在cmd中启动命令:mongo,可是启动不了。
另外我也有些懒,我就直接在安装文件中的bin下面找到mongo.exe,开始我们的shell编程,这个语法真心很像javascript的语法,以至于我一下子没有反应过来。呵呵,不吐槽了。
1.在启动mongo shell,您的会话将使用test据库上下文,默认情况下。在任何时候,用下面的命令:
[sql]
db
就会看到这个样子:
2.显示所有的数据库,就好像在mysql中的show databases;在MongoDB中是:
[html]
show dbs
3.使用以下命令,连接该数据库,若是该数据库不存在直接创建:
[sql]
use mydb
相较Mysql,这个功能,感觉有点太方便了,不过要是误操作N次,那么会不会数据库就特别多了呢。我对底层不知道,就不吐槽了。
4.你可以用help命令去查看帮助:
这些基本的命令还是看下吧。挺有用的。
5.Create two documents, named j and k,
with the following sequence of JavaScript operations:(这句英语可以读懂吧,呵呵)
j = { name : "mongo" }
k = { x : 3 }
6.好吧,先说一点,关于在MongoDB中table的概念,我也不知道用table是不是很合适,你看看下面的代码,就知道MongoDB到底有多麽随便了,尼玛!
提示:things,并非一个关键字什么的,只不过是一个数据的集合(恩,我觉得用集合比较合适):将两个变量插入things这个集合中,其实也可以理解为将insert标注为things这个集合。语法:
db.things.insert( j )
db.things.insert( k )
这里,第一次使用things这个集合,然后会直接创建,和MongoDB的DB一个德行。
7.你可以确认下,集合确存在了:
show collections
8.嗯,我想看下我的数据,就好像MySql的“select * from
tablename”:
db.things.find()
哎,你是不是突然发现,Why is one more field.是的多了个_id,这个就是主键唯一标示符,MongoDB隐式创建的,并插入到集合的每一个数据元中。
9.使用for进行循环插入:
for (var i = 1; i <= 20; i++) db.things.insert( { x : 4 , j : i } )
查询结果:
看到这里忽然觉得MongoDB的应用其实并没有想象的易做图。
不知道你注意到最后一句:type "it" for more .了没。
什么意思?
显然是显示更多啊。
10.使用遍历:
当你查询一个集合,MongoDB将返回一个对象,其中包含查询的结果。然后遍历mongo shell的“cursor”显示结果。而不是立即返回所有结果,shell遍历游标20倍显示第一个20个结果,然后等待请求迭代剩余的结果。这可以防止mongo从显示数以千计甚至数以百万计的结果在一次。
MongoDB默认显示20条数据,突然觉得比Mysql的人性化好多。
var c = db.things.find()
然后用hasNext();方法遍历处理,hasNext()有木有很熟悉的赶脚,java的,C++的还有数据结构的各种hasNext。
while ( c.hasNext() ) printjson( c.next() )
然后这个就输出全部的信息了。
11.使用数组对结果进行显示,个人觉得这个使用的时机不是太大:
var c = db.things.find()
printjson( c [ 4 ] )
12.查询特定的数据元
db.things.find( { name : "mongo" } )
查询所有的文件在x的值为4:
db.things.find( { x : 4 } )
查询所有的文件在x的值为4,在前面的查询,但是只返回值的j。MongoDB还将返回,除非明确排除_id字段。要做到这一点,你可以添加{ j:1 }文件作为投影在第二个参数。我试了下除了添加{j:0},其他的结果都一样,至于why,我在研究。
db.things.find( { x : 4 } , { j : 1 } )
13.返回一个document,而不是cursor。
db.things.findOne()
findOne()和find()用法一样,不过return的不同一个是document(文件),另一个是是个cursor(光标)。
14.Limit
the Number of Documents in the Result Set
db.things.find().limit(3)