非常不错的一个文章,强烈推荐,只是在最后一步配置php的mongo驱动时,需要指定全路径extension=mongo.so,这里的mongo.so一定要指向你本地的全路径,否则是不起作用的。



查询表user中记录,这里不加条件查询,默认会返回前20条记录,而不是向mysql中返回全部的记录:

db.user.find();



查询表user中所有记录的总条数:


db.user.find().count();



查询表user中的前10条记录:


db.user.find().limit(10);



因为默认查询时mongo每次只是会显示20条记录,因此如果记录数大于20时,需要键入

引用


it

查看下一页的内容。


查询表user中字段name为china的记录:


db.user.find({"name":"china"});



查询表user中字段name为china,age为20的记录:


db.user.find({"name":"china","age":50});



查询表user中字段name为china,age为20的记录,并且只显示name字段:


db.user.find({"name":"china","age":50},{"_id":0,"_class":0,"age":0,"name":1});



查询条件后面的条件就是指定的需要查询的字段,0为不显示,1为显示


查询表user中字段name为china,age为20、30或者40的记录:


db.user.find({"name":"china","age":{"$in":[20,30,40]}});



$in中指定的值可以是不同类型的值,如果是字符型需要使用引号扩起来。



查看复制集的状态:


rs.status();




删除复制集中已经存在的数据库:


rs.remove("复制集的名称");



注意:将mongo实例从复制集中删除之前,最好将改实例停掉。删除之后,无论成功与否,mongo都会报错,这个是正常的。只要再次使用rs.status()查看一下复制集中还有没有改节点就可以了。



添加一个新的节点:


[color=red]

rs.add({"_id":xx,"name":"xxxx"})

[/color]


添加成功后,查看rs.status(),就会看见新添加的节点的状态了。



======2013-02-21唯一性索引的使用================


今天提取数据时,发现有个集合中插入了大量的重复数据,对数据的提取造成了影响,于是想要将这些重复的数据保留一条,然后删掉其它多余的记录。


查看了一下官方文档,发现通过创建唯一性索引可以实现这个功能:


db.user.ensureIndex({"mobile":1,{"unique":true,"dropDups":true}})



选项功能:


dropDups:将重复的记录删掉,只保留第一条。

unique:说明在字段mobile上面建立的是唯一性索引。



已经创建的索引可以通过查看当前数据库下面的system.indexes集合来实现。


db.system.indexes.find();




如果需要删除已经不再使用的索引,可以使用dropIndexes指令:

db.runCommand({"dropIndexes":"索引所在集合名称","index":"索引的名称"})

,或者如果该集合也不再需要,那么可以直接删除集合,这时索引会一起被删除。