页首HTML代码

Y先生的小屋

导航

MongoDB-增删改

MongoDB的shell使用了Js引擎,因此能运行任意的Js程序。

MongoDB中常用基本数据类型:

null:空值或者不存在的字段
Boolean:true,false
数值型:{"x":NumberInt("3")} {"x":NumberLong("3")}

字符串:{"x":"foobar"}
日期:{"x":new Date()}

正则表达式::{"x":/foobar/i}
数组:{"x":["a","b","c"]}

内嵌文档:{"x":{"foo":"bar"}}

对象id:{"x":ObjectId()}

1、新增

insertOne:新增单个文档

db.collection.insertOne(
   <document>,
   {
      writeConcern: <document>
   }
)

示例

var ALin={
    "name":"A-Lin",
    "birthday":"1983-09-20",
    "nationality":"中国",
    "BirthPlace":"台湾台东",
    "constellation":"处女座",
    "Desc":"黄丽玲(A-Lin),1983年9月20日出生于台湾省台东市,台东阿美族原住民,中国台湾流行乐女歌手..."
}
db.stars.insertOne(ALin);

insertMany:批量新增

db.collection.insertMany(
   { [ <document 1> , <document 2>, ... ] },
   {
      writeConcern: <document>,
      ordered: <boolean>
   }
)

示例

var stars=
[
    {
        "name":"孙子涵",
        "birthday":"1992-06-11",
        "nationality":"中国",
        "BirthPlace":"大连",
        "constellation":"双子座",
        "Desc":"孙子涵,90后学生,90后唱作型男歌手。2011年8月6日发表了第一张个人专辑《一年一度的夏天》;荣获QQ音乐“2011年度新人奖”..."
    },
    {
        "name":"王力宏",
        "birthday":"1976-05-17",
        "nationality":"美国",
        "BirthPlace":"纽约罗切斯特",
        "constellation":"金牛座",
        "Desc":"王力宏(Leehom Wang),1976年5月17日出生于美国纽约,籍贯浙江义乌..."
    }
]
db.stars.insertMany(stars)

insert:新增单个或多个文档

db.collection.insert(
   <document or array of documents>,
   {
     writeConcern: <document>,
     ordered: <boolean>
   }
)

示例

var star=
[
    {
        "name":"王菲",
        "birthday":"1969-08-08",
        "nationality":"中国",
        "BirthPlace":"北京",
        "constellation":"狮子座",
        "Desc":"王菲(Faye Wong),1969年8月8日出生于北京,中国女歌手、影视演员..."
    }
]
db.stars.insert(star) 

2、修改

updateOne:根据filter更新单个文档

db.collection.updateOne(
   <filter>,
   <update>,    //只能使用更新操作符更新文档,例如:$set, $unset, $rename等.不能直接使用新文档替换整个旧文档
   {
     upsert: <boolean>,
     writeConcern: <document>
   }
)

示例

db.stars.updateOne(
    {"name":"王菲"},
    {"$set":{"Desc":"1987年底,王菲由北京到香港定居,经朋友介绍拜戴思聪为师学习唱歌。1989年,她以《仍是旧句子》在香港出道..."}}
)

updateMany:根据filter更新多个文档

db.collection.updateMany(
   <filter>,
   <update>,    //只能使用更新操作符更新文档,例如:$set, $unset, $rename等.不能直接使用新文档替换整个旧文档
   {
     upsert: <boolean>,
     writeConcern: <document>
   }
)

示例

db.stars.updateMany(
    {"name":"王菲"},
    {"$set":{"Desc":"1987年底,王菲由北京到香港定居,经朋友介绍拜戴思聪为师学习唱歌。1989年,她以《仍是旧句子》在香港出道..."}}
)

replaceOne:根据filter替换单个文档

db.collection.replaceOne(
   <filter>,
   <replacement>,       //只能是一个新文档,不能使用$set等操作符
   {
     upsert: <boolean>,
     writeConcern: <document>
   }
)

示例

db.stars.replaceOne(
    {"name":"王菲"},
    {
        "name":"王菲",
        "birthday":"1969-08-08",
        "nationality":"中国",
        "BirthPlace":"北京",
        "constellation":"狮子座",
        "Desc":"1989年,她以《仍是旧句子》在香港出道。1991年初,她惜别歌坛,远赴美国修读音乐..."
    }
)

update:更新集合中的一个或多个文档,既能更新指定字段也能替换整个文档

 

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,         //存在修改,不存在新增,默认false
     multi: <boolean>,          //是否修改多个文档,默认false
     writeConcern: <document>
   }
)

 

示例

db.stars.update(
    {"name":"王菲"},
    {"$set":{"Desc":"王菲(Faye Wong),1969年8月8日出生于北京,中国女歌手、影视演员..."}},
    {"multi":true}      //默认为false
)

 3、删除

Remove:从一个集合中移除一个或多个文档

db.collection.remove(
   <query>,
   <justOne>    //是否删除单个,默认false
)

示例

db.stars.remove({"name":"王菲"},true)

deleteOne:从集合中移除单个文档

db.collection.deleteOne(
   <filter>,
   {
      writeConcern: <document>
   }
)

示例

db.stars.deleteOne({"name":"王菲"})

deleteMany:根据filter删除所有匹配的文档

db.collection.deleteMany(
   <filter>,
   {
      writeConcern: <document>
   }
)

示例

db.stars.deleteMany({"name":"王菲"})

4、其他常用操作

save方法:文档存在则修改,不存在则新增

db.collection.save(
   <document>,
   {
     writeConcern: <document>
   }
)

findOneAndReplace:根据filter和sort替换单个文档

db.collection.findOneAndReplace(
   <filter>,                            //条件
   <replacement>,                       //新文档
   {
     projection: <document>,            //返回字段集合
     sort: <document>,                  //排序
     maxTimeMS: <number>,               //超时时间
     upsert: <boolean>,                 //存在修改,不存在新增,默认false
     returnNewDocument: <boolean>       //是否返回新文档,默认false
   }
)  

findOneAndUpdate方法:根据filter和sort修改单个文档

db.collection.findOneAndUpdate(
   <filter>,                            //条件
   <update>,                            //更新文档,只能使用更新操作符更新文档,例如:$inc、$mul、$rename、$setOnInsert、$set等
   {
     projection: <document>,            //返回字段集合
     sort: <document>,                  //排序
     maxTimeMS: <number>,               //超时时间
     upsert: <boolean>,                 //存在修改,不存在新增,默认false
     returnNewDocument: <boolean>       //是否返回新文档,默认false
   }
)   

findAndModify方法:修改并返回单个文档

db.collection.findAndModify({
    query: <document>,                  //条件
    sort: <document>,                   //排序
    remove: <boolean>,                  //是否移除旧文档,默认为false
    update: <document>,                 //更新文档,只能使用update操作符更新文档,例如:$inc、$mul、$rename、$setOnInsert、$set等
    new: <boolean>,                     //是否返回新文档,默认为false
    fields: <document>,                 //待返回字段集合
    upsert: <boolean>,                  //存在修改,不存在新增,默认false
    bypassDocumentValidation: <boolean>,
    writeConcern: <document>
});

5、常用update操作符

 $inc:自增操作符,只能用于数值型

db.stars.updateOne({"name":"王菲"},{"$inc":{"age":1}})

$mul:乘法,只能用于数值型

db.stars.updateOne({"name":"王菲"},{"$mul":{"age":2}})

$rename:对字段重命名

db.stars.updateOne({"name":"王菲"},{"$rename":{"age":"Age"}})

$setOnInsert:upsert参数为true时触发,为false的时候不执行

db.stars.update({"name":"王菲"},{"$set":{"age":"47"},"$setOnInsert":{"Job":"歌手"}},{"upsert":true})

$set:设置文档中字段的值

db.stars.update({"name":"王菲"},{"$set":{"age":48}})

$unset:移除文档中的一个字段

db.stars.update({"name":"王菲"},{"$unset":{"age":""}})

$min:在给定值与字段值之间取最小值

$max:在给定值与字段值之间取最大值

db.stars.update({"name":"王菲"},{"$max":{"age":40}})

$currentDate:设置某个字段的值为当前时间

db.stars.update({"name":"王菲"},{"$currentDate":{"birthday":{"$type":"date"}}})

type的值为:date、timestamp

 

 

posted on 2015-11-01 17:40  Y.Mr  阅读(287)  评论(0编辑  收藏  举报

页脚HTML代码