四、mongodb的基本操作
这篇主要说下mongodb的find,insert,update,delete以及索引的建立和删除
1、find:
引用自:http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart

注:筛选的时候默认包含_id,如果需要让返回的数据不包含_id,可使用:db.user.find({age:33},{a:1,b:1,_id:0})
?
数组查询:
$size 返回数组长度. ? db.news.find({tag:{$size:5}})
注:$size操作符并不能与其他查询操作符(子句)联合使用
?
$slice 返回子键筛选
db.test.find({foo:{$size:2}},{foo:{$slice:1}}) ?//返回结果中foo数组只返回第一个
?
子项定位:
db.user.find({"addr.nationality":"Chinese"})
?
2、insert
3、update
db.collection.update(?criteria,?objNew,?upsert,?multi?)
upsert和multi参数可选,upsert表示是否开启upsert模式(文档存在时更新,不存在时自动创建);multi表示是否开启多multi模式(默认情况下update操作只会更新第一个匹配到的文档,如果开启multi模式,则会更新所有匹配到的文档
$inc增加或减少数字的值,键不存在时会自动创建$set设置指定键的值,键不存在时会自动创建
$unset$set的反操作,会删除键及键值
$push将元素追加到数组末尾,数组不存在会自动创建
$pushAll$push的批量操作版本
$addToSet同$pushAll,但会自动过滤重复元素
$pop{$pop : {key : ?1}}——从数组末尾移除元素
{$pop : {key : -1}}——从数组开头移除元素
$pull从数组中移除所有匹配的元素
$pullAll$pull的批量操作版本
$rename修改指定键的键名
$bit对整形键值执行位操作“与”、“或”等
?
?
?
4、delete
db.users.remove({z:'abc'}); ? //删除匹配的数据
db.users.remove(); ? //删除所有
?
5、索引的创建:
?
db.things.ensureIndex({
?? ?'j': 1
});
?
// 创建子文档索引
db.things.ensureIndex({
?? ?'user.Name': -1
});
?
// 创建复合索引
db.things.ensureIndex({
?? ?'j': 1, // 升序
?? ?'x': -1 // 降序
});
?
?
?
如果已经为子键创建了索引,那么其包含的子文档就不需要索引了,例如已经创建addr的索引,就不需要创建addr.city的索引了?db.user.ensureIndex( { addr: 1 } );?
创建唯一索引:
?
db.things.ensureIndex({
?? ?'firstName': 1,
?? ?'lastName': 1
}, {
?? ?// 指定为唯一索引
?? ?'unique': true,
?? ?// 删除重复记录
?? ?'dropDups': true
});
?
6、索引的删除
?
// 删除集合中的所有索引
db.things.dropIndexes();?
// 删除指定键的索引?
db.things.dropIndex({
?? ?x: 1,
?? ?y: -1
});?
注:drop collection 的时候同时也会删除在该collection上的索引,remove则不会
?
7、空间索引
创建:db.places.ensureIndex( { loc : "2d" } )
查找:db.places.find( { loc : { $near : [50,50] } } )
?