您的位置:首页 > 数据库 > Mongodb

学习《Mongodb权威指南》学习笔记 (一)

2014-11-24 10:26 106 查看
使用$set来增加一个属性

db.table1.update({"_id":ObjectId("5472881298a2819b7ee66327")},{"$set":{"like":"123"}})


使用$set 更改一个属性

db.table1.update({"_id":ObjectId("5472881298a2819b7ee66327")},{"$set":{"like":["123","456","789"]}})


使用$unset来删除一个属性

db.table1.update({"_id":ObjectId("5472881298a2819b7ee66327")},{"$unset":{"like":"3333"}})


如要删除一个属性

db.table1.update({"_id":ObjectId("5472881298a2819b7ee66327")},{"$unset":{}})


$inc 用来增加属性的值 或在键不存在时创建这个键 值只能是整数 长整数 双精度浮点数 否则报错 例

{
"_id" : ObjectId("5472881298a2819b7ee66327"),
"game" : "pinball",
"name" : "joe",
"score" : 400
}

db.table1.update({"_id":ObjectId("5472881298a2819b7ee66327")},{"$inc":{"score":50}})
修改后
{
"_id" : ObjectId("5472881298a2819b7ee66327"),
"game" : "pinball",
"name" : "joe",
"score" : 450
}


使用$push 为一个键的末尾加入一个元素 要是没有就会创建一个新的数组 不能对非数组进行push操作 例:

db.table1.update({"_id":ObjectId("5472881298a2819b7ee66327")},{
$push:{
"people":{
"name" : "joe",
"like" : "lookbook"
}
}
})


使用$addToSet 为一个数组push一个 值 如果 该数组已经有相同的值 则不会添加 可避免重复

db.table1.update({"_id":ObjectId("5472881298a2819b7ee66327")},{ "$addToSet":{"people": "123"}})
{
"_id" : ObjectId("5472881298a2819b7ee66327"),
"game" : "pinball",
"name" : "joe",
"score" : 500,
"people" : [
{
"name" : "joe",
"like" : "lookbook"
},
"123"
]
}


注意

使用$addToSet 和 $each 灵活运用技巧 例:

db.table1.update({"_id":ObjectId("5472881298a2819b7ee66327")},{ "$addToSet":{"people": {"$each":["4444","5555","666"]}}})


{
"_id" : ObjectId("5472881298a2819b7ee66327"),
"game" : "pinball",
"name" : "joe",
"score" : 500,
"people" : [
{
"name" : "joe",
"like" : "lookbook"
},
"123",
"4444",
"5555",
"666"
]
}


使用$pop 来删除数组中的 第一个或者 最后一个元素 例: {$pop : {key:1}} 从数组末尾删除一个元素 {$pop : {key:-1}} 从头部删除

db.table1.update({"_id":ObjectId("5472881298a2819b7ee66327")},{'$pop' : {"people":1}})


删除后

{
"_id" : ObjectId("5472881298a2819b7ee66327"),
"game" : "pinball",
"name" : "joe",
"score" : 500,
"people" : [
{
"name" : "joe",
"like" : "lookbook"
},
"123",
"4444",
"5555"
]
}


使用$pull基于条件删除元素 而不是依据位置 也是数组操作 例:

db.table1.update({"_id":ObjectId("5472881298a2819b7ee66327")},{ "$pull" : {"people" : "4444"} })


修改前

{
"_id" : ObjectId("5472881298a2819b7ee66327"),
"pull" : {
"people" : [
"4444",
"5555"
]
},
"people" : [
"4444",
"5555",
"666"
]
}


修改后

{
"_id" : ObjectId("5472881298a2819b7ee66327"),
"pull" : {
"people" : "5555"
}
}


ps 语句

db.table1.update({"_id":ObjectId("5472881298a2819b7ee66327")},{"$push" : {"people" : {"$each":[{"name":"1212","password":"sadsad"},{"name":"ads","password":"adasdsa"},{"name":"23232","password":"adad"}]}}})


修改后

{
"_id" : ObjectId("5472881298a2819b7ee66327"),
"pull" : {
"people" : [
"4444",
"5555"
]
},
"people" : [
{
"name" : "aaa",
"password" : "12121"
},
{
"name" : "1212",
"password" : "sadsad"
},
{
"name" : "ads",
"password" : "adasdsa"
},
{
"name" : "23232",
"password" : "adad"
}
]
}


update 第一个参数 查询条件

第二个参数 修改内容

第三个参数 是否全部更新 true or false

第四个参数 是否启用 upsert update and insert
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: