说明:主要以Mongodb权威指南为参考资料,其中有些示例是直接截图。
- 创建——insert 为集合添加新文档。如果要插入多个文档,使用批量插入会快一些。一次传递一个由文档构成的数值给数据库(多个文档插入到一个集合起作用)。没有提供给shell的“批量插入方法”,for循环,里面就是insert。导入原始数据则用mongodimport。
-
读取——find /findOne(),返回所有键值。也可以通过第二个参数来返回指定的键值。
查询条件:条件句是内层文档的键,修改器是外层文档的键。
<、<=、>、>= 、!=分别对应:"$lt"、"$lte"、"$gt"、"$gte"、"$ne"
"$in"/"$nin":返回一个键的多个匹配值。
"$or":多个匹配键值。
"$not":元条件句,即可以用在任何其他条件之上。
正则表达式:
数组查询:
"$all"
"$size": 查询指定长度的数组,不能和其他查询子句结合。
"$slice":返回数组的一个子集。默认返回文档所用的键。
查询内嵌文档:可以用。表示法查询内嵌的键,这也是待插入的文档不能包含。的原因。
要正确指定一组条件,而不是指定每个键,要使用"$selemMatch"。
$where 查询:不到必要时,不要使用。
-
更新——update(需要更新的文档限定条件,新的文档)
整体更新:
局部更新:
更新文档——修改器的使用("_id"的值不能改变,其他的键值可以改变,包括索引)
1、"$set"修改器——用来指定一个键的值。不存在则创建它,存在则更新。
增加、修改、删除键的时候应该使用$修改器。
增加
修改
删除
2、增加和减少——"$inc"增加已有键的值,不存在则创建一个新键。只能用于整数、长整数、双精度浮点数。且其值必须为数字,不能使用字符串、数组等其他非数字的值。
如图:开始不存在score键,先创建;接着要加5000分;最后扣除1000分。
3、数组修改器——只能用于值为数组的键上。
"$push":在数组末尾加一个元素,没有则创建一个新的数组。
"$ne"和"$push"组合避免重复。
"$addToset"可以避免重复,也可以"$each"组合 起来,添加多个不同的值。
"$pop" 从数组中删除元素。
{"$pop":{key:1}} 从数组末尾删除一个元素;
{"$pop":{key:-1}} 从数组头部删除一个元素;
{"$pop":{key:value}}指定数组中要删除的值。
4、数组定位修改器——通过位置(下标从0开始)或者定位操作符("$")。
"$"用来定位查询文档已经匹配的元素,并进行更新。只更新第一个匹配的元素。
5、upsert更新——没有文档符合更新条件,则以更新条件和文档为基础创建一个新的文档;找到则正常更新
update()第三个参数为Ture表示是一个upsert更新。
6、更新多个文档——默认情况下,只更对符合条件的第一个文档进行更新,设置update第四个参数为ture可以更新多个文档。
-
删除——remove()删除集合中的所有文档,但是不删除集合本身,原有的索引也会保留。
当有属性和目标集合同名的时候,可以使用getCollection函数: db.getCollection("version");
查看集合名称中含有无效javascript字符: db.getCollection("foo-bar");
在Javascript中,x.y与x['y']完全等价。对每个子集合操作的时候可以迭代。