查询
- 等于
db.foo.bar.find({age:23})
- 匹配符
db.foo.bar.find({age: {$gt: 22}})
db.foo.bar.find({$or[{id:1}, {id:2}]})
db.foo.bar.find({$and[{id:{$gt:0}}, {id:{$lt:2}}]}) // id大于0小于2
db.foo.bar.find({phone:{$exists: 1}) // 找出存在phone字段的所有记录,0:不存在
- 嵌套数组匹配
db.foo.bar.find({“phone”: “12312312312”})
数组对象为BSON时
db.foo.bar.find({“family”:{$elematch: {“dad”: tom, “phone”:“12345678901”}}})
- 嵌套BSON对象匹配查询
db.foo.bar.find({“name”:{$elematch:{“first”: “tom”}}})
或者
db.foo.bar.find(“name.first”:“tom”)
- 第二个参数:指定返回的字段
db.foo.bar.find({}, {name:"", people:""})
- 如果记录中不包含输入的字段,也会默认返回
更新
- $set更新
db.foo.bar.update({ $set:{name: "Mike"} }, { _id:1 }) // 如果没有name这个字段,会自动增加
// unset
db.foo.bar.update({$unset:{age: ""}) // 删除记录中所有的age字段,若没有,则会跳过
// upsert
db.foo.bar.upsert({ $set:{name: "Mike"} }, { _id:10 }) // 如果没有id=10这个记录,会自动增加;如果有则更新字段/插入字段
删除
- remove()
db.foo.bar.remove() // 删除全部记录
db.foo.bar.remove({id : 1})
- truncate():效率更好,但不能做数据过滤
db.foo.bar.truncate() // 删除全部记录