注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

星期五

明天不上班

 
 
 

日志

 
 
关于我

一个特立独行的Java程序员,比较宅,上上网,写博客,听音乐,看电影。

网易考拉推荐

MongoDB学习笔记(一)  

2011-06-29 23:31:43|  分类: 非关系数据库 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

先从简单的mongoDB的客户端开始。

(相信如何启动mongoDB大家都会吧!!! ./bin/mongod)   

1.启动mongoDB客户端 。(./bin/mongo)

例如:

--------------------------------------------------------------------------------------

hjzheng@ubuntu:~/app/mongodb-linux-x86_64-1.6.4/bin$ ./mongo

MongoDB shell version: 1.6.4

connecting to: test

---------------------------------------------------------------------------------------

2.因为mongoDB客户端 默认使用的是javascript 所以javascript的函数都可以使用。 
例如:

---------------------------------------------------------------------------------------

> 3-6

-3

> new Date()

"Wed Jun 29 2011 22:47:11 GMT+0800 (CST)"

> Math.sin(Math.PI)

1.2246467991473532e-16

> function hello(name){return "hello"+name;}

> hello("hurry")

hellohurry

---------------------------------------------------------------------------------------

3.使用help命令 

help中常用的三个命令:1.show dbs   显示当前server中的所有的数据库

                                      2.use db_name  切换数据库

                                      3.show colllections  显示当前数据库中的所有集合

例如:

---------------------------------------------------------------------------------------

> help

db.help()                    help on db methods

db.mycoll.help()             help on collection methods

rs.help()                    help on replica set methods

help connect                 connecting to a db help

help admin                   administrative help

help misc                    misc things to know

 

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

use <db_name>                set current database

db.foo.find()                list objects in collection foo

db.foo.find( { a : 1 } )     list objects in foo where a == 1

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

exit                         quit the mongo shell

-------------------------------------------------------------------------------------------------

例如:

-------------------------------------------------------------------------------------------------

> show dbs   //我们有三个数据库                                                                                                                               

admin

local

myDB

> use myTest   //这个时候myTest还没有建立.

switched to db myTest

> db.users.save({"username":"hurry"}) //当你插入数据时,myTest建立了.

> show dbs //我们现在有4个数据库了

admin

local

myDB

myTest

-------------------------------------------------------------------------------------------------

4.创建一个集合,并插入数据 使用insert 。(注意当你插入一条数据后,系统会为该数据(文档)增加_id属性)
例如:
-------------------------------------------------------------------------------------------------
> user = {"username":"hurry","date":new Date()}
{ "username" : "hurry", "date" : "Wed Jun 29 2011 23:07:51 GMT+0800 (CST)" }
> db.users.insert(user)
> db.users.find({"username":"hurry"})
{ "_id" : ObjectId("4e0b3e6afe40f5d542f5a6ed"), "username" : "hurry" }
{ "_id" : ObjectId("4e0b3fd7fe40f5d542f5a6ee"), "username" : "hurry", "date" : "Wed Jun 29 2011 23:07:51 GMT+0800 (CST)" }
>  
-----------------------------------------------------------------------------------------------------
5.查询数据 参看上面的例子使用find 或 findOne 在shell输入函数名(注意不加括号) 会显示函数的定义
例如:
----------------------------------------------------------------------------------------------------
> db.users.find                      
function (query, fields, limit, skip) {
    return new DBQuery(this._mongo, this._db, this, this._fullName, this._massageObject(query), fields, limit, skip);
}
> db.users.findOne
function (query, fields) {
    var cursor = this._mongo.find(this._fullName, this._massageObject(query) || {}, fields, -1, 0, 0);
    if (!cursor.hasNext()) {
        return null;
    }
    var ret = cursor.next();
    if (cursor.hasNext()) {
        throw "findOne has more than 1 result!";
    }
    if (ret.$err) {
        throw "error " + tojson(ret);
    }
    return ret;
}
--------------------------------------------------------------------------------------------------------------

6.更新 使用update (这里为什么只更新了一个) 原因见参考资料

例如:

--------------------------------------------------------------------------------------------------------------
> user.hasBooks = ["Java in Action"]
[ "Java in Action" ]
> user
{
"username" : "hurry",
"date" : "Wed Jun 29 2011 23:07:51 GMT+0800 (CST)",
"hasBooks" : [
"Java in Action"
]
}
> db.users.update({"username":"hurry"},user)
> db.users.find()
{ "_id" : ObjectId("4e0b3fd7fe40f5d542f5a6ee"), "username" : "hurry", "date" : "Wed Jun 29 2011 23:07:51 GMT+0800 (CST)" }
{ "_id" : ObjectId("4e0b3e6afe40f5d542f5a6ed"), "username" : "hurry", "date" : "Wed Jun 29 2011 23:07:51 GMT+0800 (CST)", "hasBooks" : [ "Java in Action" ] }

--------------------------------------------------------------------------------------------------------------

7.删除 remove方法
例如:
--------------------------------------------------------------------------------------------------------------
> db.users.remove({"username":"hurry"})
> db.users.find()                      
--------------------------------------------------------------------------------------------------------------

参考资料:

1).update()命令

db.collection.update( criteria, objNew, upsert, multi )

criteria : update的查询条件,类似sql update查询内where后面的
objNew   : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert   : 这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi    : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

例:
db.test0.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } ); 只更新了第一条记录
db.test0.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true ); 全更新了
db.test0.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false ); 只加进去了第一条
db.test0.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true ); 全加进去了
db.test0.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );全更新了
db.test0.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );只更新了第一条

  评论这张
 
阅读(305)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017