非常不错的一个文章,强烈推荐,只是在最后一步配置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":"索引的名称"})
,或者如果该集合也不再需要,那么可以直接删除集合,这时索引会一起被删除。