Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1685164
  • 博文数量: 186
  • 博客积分: 3044
  • 博客等级: 中校
  • 技术积分: 2493
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-25 15:04
文章分类

全部博文(186)

文章存档

2024年(2)

2022年(4)

2021年(3)

2020年(1)

2019年(5)

2018年(13)

2017年(6)

2016年(10)

2015年(11)

2014年(11)

2013年(13)

2012年(23)

2011年(25)

2010年(2)

2008年(1)

2007年(5)

2006年(51)

分类: NOSQL

2013-09-18 16:48:04

 >db.T_MicroBlog.find({"_id":"51b43c1024acafc5fdd4837d"});
{ "_id" : "51b43c1024acafc5fdd4837d", "numericId" : NumberLong(83478), "adminDel" : false, "comment" : NumberLong(0), "favorite" : NumberLong(0), "forward" : NumberLong(0), "forwardComment" : NumberLong(0), "ownerId" : "********", "name" : "**", "from" : "web", "sendTime" : ISODate("2013-06-09T08:25:52.773Z"), "update" : ISODate("2013-06-09T08:25:52.773Z"), "groupId" : "**********", "nwId" : "3*****", "content" : "分享文档“data_init.txt”", "del" : false, "atts" : [       {       "fileID" : "******",  "contentType" : "text/plain",   "fileName" : "data_init.txt",   "length" : NumberLong(358),     "shareId" : "*******",      "ownerId" : "*******",         "isDeleted" : false } ] }

atts是个数组,如果要根据数据里的fileID进行查询,就得用如下的语句:
db.T_MicroBlog.find({"atts.fileID":"51b43c0d24acf313f796bbe5"});
{ "_id" : "*******", "numericId" : NumberLong(83478), "adminDel" : false, "comment" : NumberLong(0), "favorite" : NumberLong(0), "forward" : NumberLong(0), "forwardComment" : NumberLong(0), "ownerId" : "******", "name" : "**", "from" : "web", "sendTime" : ISODate("2013-06-09T08:25:52.773Z"), "update" : ISODate("2013-06-09T08:25:52.773Z"), "groupId" : "*******", "nwId" : "*******", "content" : "分享文档“data_init.txt”", "del" : false, "atts" : [       {       "fileID" : "*******",  "contentType" : "text/plain",   "fileName" : "data_init.txt",   "length" : NumberLong(358),     "shareId" : "*******",      "ownerId" : "*********",         "isDeleted" : false } ] }

mongoexport 导出csv格式文件
./mongoexport -d ossDev -c T_AddAccountVO  -q '{"syncType":"TOWEIBO_ADD_ACCOUNT"}'  --fields 'openId,createTime,accountName' --csv  -o test.csv  

mongodbump与mongoexport不支持ISODate是不支持的
以时间戳并转换成毫秒,才能正常导出数据
>date -d 2014-10-01 +%s
1412092800
注意的是:这个值在mongodb查询是不对的,真正的值要在后面加三个000
原因:未知
在mogodb执行以下命令可以得到以下结果
> ISODate("2014-09-30T16:00:00Z").valueOf()
1412092800000

 >/usr/local/mongodb/bin/mongoexport -h 127.0.0.1 -d logstat -c T_LoginOut -q '{"time" : {$gte:Date(1412092800000)}}'



以下是转的


一、操作符 
操作符相信大家肯定都知道了,就是等于、大于、小于、不等于、大于等于、小于等于,但是在mongodb里不能直接使用这些操作符。在mongodb里的操作符是这样表示的: 
(1) $gt > (大于)    
(2) $lt  < (小于)    
(3) $gte  >= (大于等于) 
(4) $lt  <= (小于等于)   
(5) $ne  != (不等于)  
(6) $in  in (包含)       
(7) $nin  not in (不包含)   
(8) $exists  exist (字段是否存在)  
(9) $inc  对一个数字字段field增加value 
(10) $set  就是相当于sql的set field = value 
(11) $unset  就是删除字段   
(12) $push  把value追加到field里面去,field一定要是数组类型才行,如果field不存在,会新增一个数组类型加进去 
(13) $pushAll  同$push,只是一次可以追加多个值到一个数组字段内 
(14) $addToSet  增加一个值到数组内,而且只有当这个值不在数组内才增加。 
(15) $pop  删除最后一个值:{ $pop : { field : 1 } }删除第一个值:{ $pop : { field : -1 } }注意,只能删除一个值,也就是说只能用1或-1,而不能用2或-2来删除两条。mongodb 1.1及以后的版本才可以用 
(16) $pull  从数组field内删除一个等于value值 
(17) $pullAll  同$pull,可以一次删除数组内的多个值 
(18) $ 操作符  是他自己的意思,代表按条件找出的数组里面某项他自己。这个比较坳口,就不说了。 


二、CURD 增、改、读、删 
增加 
复制代码 代码如下:


db.collection->insert({'name' => 'caleng', 'email' => 'admin#admin.com'}); 


是不是灰常简单呀,对就是这么简单,它没有字段的限制,你可以随意起名,并插入数据 


修改 
复制代码 代码如下:


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


查询 
复制代码 代码如下:


db.collection.find(array('name' => 'bailing'), array('email'=>'email@qq.com')) 
db.collection.findOne(array('name' => 'bailing'), array('email''email@qq.com')) 


大家可以看到查询我用了两种不同的写法,这是为什么,其实这跟做菜是一样的,放不同的调料,炒出的菜是不同的味道。下面给大家说一下,这两种调料的不同作用。 
findOne()只返回一个文档对象,find()返回一个集合列表。 
也就是说比如,我们只想查某一条特定数据的详细信息的话,我们就可以用findOne(); 
如果想查询某一组信息,比如说一个新闻列表的时候,我们就可以作用find(); 
那么我想大家这时一定会想到我想对这一个列表排序呢,no problem mongodb会为您全心全意服务 
复制代码 代码如下:


db.collection.find().sort({age:1}); //按照age正序排列 
db.collection.find().sort({age:-1}); //按照age倒序排列 
db.collection.count(); //得到数据总数 
db.collection.limit(1); //取数据的开始位置 
db.collection.skip(10); //取数据的结束位置 
//这样我们就实现了一个取10条数据,并排序的操作。 


删除 
删除有两个操作 remove()和drop() 
复制代码 代码如下:


db.collection.remove({"name",'jerry'}) //删除特定数据 
db.collection.drop() //删除集合内的所有数据 


distinct操作 
复制代码 代码如下:


db.user.distinct('name', {'age': {$lt : 20}}) 

阅读(6408) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~