日常的增删查改
1. 增: insert
介绍: mongodb 存储的是文档,文档是json格式的对象。
语法:
db.collectionName.insert(document);
db.stu.insert([{_id:4,sn:'004', name:'xiaowang'}, {_id:5,sn:'005', name:"xiaoxiao"}])
2. 删: remove
语法: db.collectionName.remove(查询表达式,选项)
选项是指 {justOne:true/false}, 是否只删除一行,默认为false
例1:属性为name的document将被删掉:
db.collectionName.remove({name:'001'})
例2:collectionName中age为23的documents中将被删掉一个
db.collectionName.remove({age:23}, true)
注意:
- 查询表达式依然是个json对象
- 查询表达式匹配的行将被删掉
- 如果不写查询表达式,collection中的所有文档都将被删掉
3. 查: find, findOne
语法: db.collection.find(查询表达式,查询的列)
db.collectionName.find(表达式, {列1:1, 列2:1})
例: 查询指定collection中的所有文档 所有内容
db.stu.find()
例: 只查询name列(_id属性总是默认查出来)
db.stu.find({}, {name:1})
例: 查询所有gender为male的文档的name列(_id属性总是默认查出来)
db.stu.find({gender:'male'}, {name:1})
例: 只查询name列, 但是不查询id列
db.stu.find({}, {name:1, _id:0})
4. 改: update
改谁? -- 查询表达式
改成什么样? -- 新值 或 赋值表达式
语法: db.collectionName.update(查询表达式, 新值,选项)
例: 如下是指 选中news中name为QQ的文档,并把其文档值改为{name:'MSN'}
db.news.update({name:'QQ'}, {name:'MSN'})
结果: 文档中的其他列也不见了,改后只有_id 和name列了。即新文档值直接替换了旧文档而不是修改。
如果想修改文档的某列,可以使用$set关键字:
db.news.update({name:'QQ'}, {$set:{name:'MSN'}})
修改时的赋值表达式:
$set: 修改某列的值 或者 新增某列
$unset: 删除某列
$rename: 重命名某个列
$inc: 某个列的值
$setOnInsert: 当upsert为true时,并且发生了insert操作时,可以补充的字段
image.png
Option的作用:
{upsert:true/false,multi:true/false}
- Upsert: 是指没有匹配的行则直接插入该行(和mysql中的replace一样), 默认为true, 不存在直接插入
例: 没有_id = 99的文档被修改,则直接插入该文档
db.news.update({_id, 99}, {x:123,y:1234}, {upsert:true})
- Multi: 是指修改多行(即使查询表达式能够匹配都行,默认也只改一行, 如果想改多行,则设置该选项为true)
例:
网友评论