MongoDB 常用命令

简单的的增删改查数据

在查询结果中指定显示或者不显示某个字段

例如,我们希望在 lessons 集合中查找所有数据,但是不希望在返回结果中包含 slides 字段;因为 slides 是一个巨长的以 base64 表示的图片数组,影响查询结果的阅读。
那么我们就可以在 query object 后面跟上一个参数。如下:

db.lessons.find({}, {slides:0});

同样也可以明确指定显示哪些字段:

db.bios.find(
{ },
{ name: 1, contribs: 1, _id: 0 }
)

比较操作 – 大于和小于

我们要查询时间范围在 startTime 和 endTime 间的数据记录,同时要求 Content 内容是数字 1 到 5。

db.wemessages.find( {$and: [
    { CreateTime: {$gt: (startTime.getTime()/1000).toString()} },
    { CreateTime: {$lt: (endTime.getTime()/1000).toString()} },
    { Content: {$in: ['1','2','3','4','5']} }
  ]}
);

这里我们使用了 $and 逻辑操作符,和 $gt, $lt, $in 比较操作符。

有关 MongoDB 的操作符,参见:http://docs.mongodb.org/manual/reference/operator/query/

更新一条记录的某些属性

使用 $set 表示只更新指定的字段,而不修改其他字段,我们一般情况下都会是这种意图。

db.lessons.update({}, {$set:{'course_id':'c.101'}});

更新多条记录

使用 {multi: true}

db.lessons.update({}, {$set:{'course_id':'c.101'}}, {multi: true});

db.muusers.update({username: 'tom'}, {$set: {mobile: '6508639713'}}, {multi: true});

排序查询结果

使用 sort 方法

db.muusers.find().sort({firsttime: -1});

-1 降序,1 升序

清爽地查看查询结果

使用 pretty 方法

db.lessons.find({lesson: 1}, {slides: 0, mp3voice:0, wavvoice:0, wavvoicemin: 0}).pretty();

查看不存在某个字段的记录

使用 $exists

db.questions.find({'sequence_id': 1, 'pngslide': {$exists: false}});

db.mycollection.find( { "price" : { "$exists" : false } } )

限定查询结果个数 limit, 以及跳过开始的多少条记录 skip

使用 limitskip

db.translation_memory.find({mp3voice: {$exists: false}}, null, {limit: 100});

删除 collection 中的所有内容

使用 collection 的 remove 方法

db.collection.remove();

得到 collection 中一个字段的长度

链式调用

db.lessons.find({lesson: 1}).toArray()[0].slides.join('').length

Collection 操作

更名 collection

使用 renameCollection 方法

db.quizzes.renameCollection('questions');

删除一个字段

使用 $unset

db.questions.update({}, {$unset: {quiz_name:1}}, {multi: true});

db.learning_progress.update({}, {$unset: {lesson:1}}, {multi: true});

db.lessons.update({}, {$unset: {wavvoice:1, wavvoicemin:1}}, {multi: true});

修改一个字段的名称

使用 $rename

db.students.update( { _id: 1 }, { $rename: { 'nickname': 'alias', 'cell': 'mobile' } } )

注意:有些MongoDB的关键词不能用做Collection的名称,例如:group。

使用 Node.js 和 MongoDB 开发高性能微信公众平台应用

发布仅两年即坐拥三亿用户的微信无疑是当前国内最炙手可热的移动互联网应用,腾讯也据此稳稳拿到一张移动互联网的“船票”。微信公众平台的推出,则让其他企业和个人有机会通过微信渠道将业务和品牌推广给上亿的微信用户,可以大大地减少宣传成本;同时也可以充分利用微信公众平台接口的能力和移动终端特性,开发出创新的产品和商业模式。

使用微信公众平台我们既可以向订阅用户群发消息,也可以编程实现对用户发送的消息进行自动回复,同时还可以管理用户的订阅和取消事件等;支持的消息类型既包括文本,语音,图片,位置信息和链接,也可以是丰富的图文信息。而且未来肯定还会不断地增加新的功能,比如移动支付。

因此从本质上来看,微信公众平台就是一个豪华版的移动互联网时代的“梦网”,想想当年的“移动梦网”可是拯救了整个的国内互联网公司,微信公众平台的发展未来绝对可以用“不可限量”来形容。

这个 presentation 主要与大家交流微信公众平台应用开发的相关内容,涵盖接入,设计,开发,调试和测试等全流程,将会对微信公众平台接口和能力进行全面而详尽的剖析。

我们使用流行的 Node.js + MongoDB 的组合进行讲解和演示,最终使大家都能够开发出支持百万用户以上的高性能可伸缩的微信公众平台应用。

PPT

原文地址:http://www.tfan.org/wechat-on-nodejs-and-mongodb/

把 SQL Server 导入 MongoDB 的 Ruby 脚本

2013.03.28 更新:如何在 Linux 下面使 Rails 能够连接到 SQL Server 请参见我的另外一篇文章:http://www.tfan.org/install-activerecord-sqlserver-adapter-under-centos/

最近想要测试一下 MongoDB 2.4 新增的 Text Search 功能,需要把以前 SQL Server 数据库中的内容导出到 MongoDB 中做测试用。

虽然用 Node.js 也可以操作 SQL Server 数据库,但是微软提供的 msnodesql 驱动目前(版本0.2.1)只支持 Windows,想想还是改一下以前写的 Ruby 脚本会更快些。 (更多…)