MongoDB 命令行cmd shell操做


  1. 查看全部数据库show dbs
  2.  切换到不一样数据库use userdb
  3. 查看全部集合(表) show tables和show collections均可以查看当前数据下的集合
    > show tables
    address
    users
    >
    > show collections
    address
    users
    >

     

  4. 建立集合(表)db.createCollection("userstable")
  5. 插入数据 db.userstable.insert({"usernmae": "mengdee", "age": 26})
    方式一: insert: _id 会自动建立惟一索引,当id重复的时候会报错
    db.集合名字.insert({})        // 插入一条,返回值中不包含insertedIds
    db.集合名字.insert([{}, {}])  // 批量插入,返回值中不包含insertedIds
    db.集合名字.insertOne(Bson)   // 插入一条,返回值返回插入的insertedId
    db.集合名字.insertMany(Bson)  // 批量插入,返回值中包含insertedIds
    db.集合名字.findAndModify({查询条件}, "update": {须要添加或更新的字段},  "upsert": true });
    
    写入安全:
    	应答模式:插入时会返回成功或者失败
    	非应答模式:插入时没有反馈,即插入有没有成功不知道
    > var user = {"name": "mengdee", "age": 20, "address": "上海市浦东新区张江镇", "create_time": new Da
    te()}
    > db.users.insert(user)
    WriteResult({ "nInserted" : 1 })
    > db.users.find()
    { "_id" : ObjectId("5976ad21670af2aa52ea90df"), "username" : "mengdee", "age" : 26 }
    { "_id" : ObjectId("5976b395670af2aa52ea90e0"), "name" : "mengdee", "age" : 20, "address" : "上海市
    浦东新区张江镇", "create_time" : ISODate("2017-07-25T02:57:04.545Z") }
    
    > var userDoc = db.users.findOne()
    > var insertDate = userDoc["_id"]
    > insertDate.getTimestamp()
    ISODate("2017-07-25T02:29:53Z")
    > insertDate.str
    5976ad21670af2aa52ea90df
    
    > db.users.insertOne({"username": "mengday3"})
    {
            "acknowledged" : true,
            "insertedId" : ObjectId("5976b632670af2aa52ea90e1")
    }
    > db.users.insertMany([{"username": "mengday4"}, {"username": "mengday5"}])
    {
            "acknowledged" : true,
            "insertedIds" : [
                    ObjectId("5976b666670af2aa52ea90e2"),
                    ObjectId("5976b666670af2aa52ea90e3")
            ]
    }
    > db.users.insert([{"username": "mengday6"}, {"username": "mengday7"}])
    BulkWriteResult({
            "writeErrors" : [ ],
            "writeConcernErrors" : [ ],
            "nInserted" : 2,
            "nUpserted" : 0,
            "nMatched" : 0,
            "nModified" : 0,
            "nRemoved" : 0,
            "upserted" : [ ]
    })
    
    // 使用insertOne插入重复的_id 会报错
    > db.users.insertOne({"_id": 1, "username": "mengday8"})
    { "acknowledged" : true, "insertedId" : 1 }
    > db.users.insertOne({"_id": 1, "username": "mengday8"})
    2017-07-25T11:15:47.822+0800 E QUERY    [thread1] WriteError: E11000 duplicate key error collection:
     test.users index: _id_ dup key: { : 1.0 } :
    WriteError({
            "index" : 0,
            "code" : 11000,
            "errmsg" : "E11000 duplicate key error collection: test.users index: _id_ dup key: { : 1.0 }
    ",
            "op" : {
                    "_id" : 1,
                    "username" : "mengday8"
            }
    })
    
    // findAndModify 也能够用于插入文档,可是前提是必定不存在,若是存在了就变成更新了,单纯的插入仍是不要用种方式了,findAndModify通常用于更新或删除操做
    > db.users.findAndModify({ "query": {"username": "mengday11"}, "update": {"username": "mengday11", "age": 26},  "upsert": true })
    null
    > db.users.find()
    { "_id" : ObjectId("597c584448c373e228a9259e"), "username" : "xxx", "age" : 26 }
  6. 删除集合(表)db.userstable.drop()
  7. 删除知足条件的全部数据: remove({删除条件})
    // 删除bson变量中的某个字段
    > var user = {"username": "mengday", "age": 26}
    > delete user.age
    > user
    { "username" : "mengday" }

     

  8. 查看表的全部数据db.userstable.find() 
  9. 查看userstable表的记录条数db.userstable.find().count()
  10. 更新数据 update,findAndModify
    > db.users.find()
    { "_id" : 1, "username" : "mengday5", "password" : "123456", "age" : 38 }
    // 使用$set修改器修改指定字段, 当字段不存在时会建立并赋值
    > db.users.update({"username": "mengday5"}, {$set: {"age": 18}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.users.find()
    { "_id" : 1, "username" : "mengday5", "password" : "123456", "age" : 18 }
    
    // $unset 用于删除字段
    > db.users.update({"username": "mengday5"}, {"$unset": {"age": 1}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.users.find()
    { "_id" : 1, "username" : "mengday5", "password" : "123456" }
    
    > db.users.find()
    { "_id" : 1, "username" : "mengday5", "password" : "123456" }
    
    // $push: 向数组的尾部添加一个元素,若是字段不存在则建立
    > db.users.update({"username": "mengday5"}, {"$push": {"hobby": "mm"}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.users.find()
    { "_id" : 1, "username" : "mengday5", "password" : "123456", "hobby" : [ "mm" ] }
    > db.users.update({"username": "mengday5"}, {"$push": {"hobby": "money"}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.users.find()
    { "_id" : 1, "username" : "mengday5", "password" : "123456", "hobby" : [ "mm", "money" ] }
    >
    
    // $push + $each : 批量push
    > db.users.update({"username": "mengday5"}, {"$push": {"hobby": {"$each": ["play", "eat"]}}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.users.find()
    { "_id" : 1, "username" : "mengday5", "password" : "123456", "hobby" : [ "mm", "money", "play", "eat" ] }
    >
    
    // $pushAll = $push + $each 批量push
    > db.users.update({"username": "mengday5"}, {"$pushAll": {"hobby": ["drink", "happy"]}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.users.find()
    { "_id" : 1, "username" : "mengday5", "password" : "123456", "hobby" : [ "mm", "money", "play", "eat", "drink", "happy" ] }
    
    
    > db.users.find()
    { "_id" : 1, "username" : "mengday5", "password" : "123456" }
    
    // $addToSet:不重复的set集合
    > db.users.update({}, {"$addToSet": {"hobby": "eat"}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.users.find()
    { "_id" : 1, "username" : "mengday5", "password" : "123456", "hobby" : [ "eat" ] }
    >
    > db.users.update({}, {"$addToSet": {"hobby": {"$each": ["eat", "drink"]}}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.users.find()
    { "_id" : 1, "username" : "mengday5", "password" : "123456", "hobby" : [ "eat", "drink" ] }
    >
    
    // $pop: 弹出数组的头部元素或尾部元素: -1:头部,1:尾部
    > db.users.update({}, {"$pop": {"hobby": 1}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.users.find()
    { "_id" : 1, "username" : "mengday5", "password" : "123456", "hobby" : [ "eat" ] }
    
    // $pull: 删除数组中的值
    > db.lists.insert({"no": [1, 1, 1, 3]})
    WriteResult({ "nInserted" : 1 })
    > db.lists.update({}, {"$pull": {"no": 1}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.lists.find()
    { "_id" : ObjectId("597c0a3087d089dfa7ce1be2"), "no" : [ 3 ] }
    >
    
    // 使用小标或者定位操做符$来操做数组
    > db.users.find()
    { "_id" : ObjectId("597c3c1587d089dfa7ce1be3"), "username" : "mengday", "addresses" : [ { "city" : "shanghai", "area" : "zhangjiang" }, { "city" : "be
    ijing", "area" : "chaoyang" } ] }
    >
    // 修改内嵌文档数组中第二个元素的值
    > db.users.update({"username": "mengday"}, {"$set": {"addresses.1.area": "chaoyangqu"}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.users.findOne()
    {
            "_id" : ObjectId("597c3c1587d089dfa7ce1be3"),
            "username" : "mengday",
            "addresses" : [
                    {
                            "city" : "shanghai",
                            "area" : "zhangjiang"
                    },
                    {
                            "city" : "beijing",
                            "area" : "chaoyangqu"
                    }
            ]
    }
    
    // 定位操做符$: 查询条件通常是以数组中的元素为条件,使用$符号做为知足查询条件的第一条文档对应的下标值
    > db.users.update({"addresses.city": "beijing"}, {"$set": {"addresses.$.area": "CHAOYANG"}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.users.findOne()
    {
            "_id" : ObjectId("597c3c1587d089dfa7ce1be3"),
            "username" : "mengday",
            "addresses" : [
                    {
                            "city" : "shanghai",
                            "area" : "zhangjiang"
                    },
                    {
                            "city" : "beijing",
                            "area" : "CHAOYANG"
                    }
            ]
    }
    
    
    // 文档总体替换
    > db.users.update({"username": "mengday5"}, {"age": 17})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.users.find()
    { "_id" : 1, "age" : 17 }
    
    // 第三个参数: 插入或者更新,当_id不存在的时候插入,当_id值存在的时候更新
    > db.users.update({"_id": 2}, {"username": "mengday", "age": 16}, true)
    WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : 2 })
    > db.users.find()
    { "_id" : 1, "age" : 17 }
    { "_id" : 2, "username" : "mengday", "age" : 16 }
    
    // 更新
    > db.users.update({"_id": 2}, {"username": "mengday2", "birthday": new Date()}, true)
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.users.find()
    { "_id" : 1, "age" : 17 }
    { "_id" : 2, "username" : "mengday2", "birthday" : ISODate("2017-07-25T06:33:10.579Z") }
    
    > db.users.find()
    { "_id" : 1, "username" : "mengday", "age" : 16 }
    { "_id" : 2, "username" : "mengday2", "age" : 16 }
    
    // 更新知足条件的第一条文档
    > db.users.update({"age": 16}, {$set: {"age": 18}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.users.find()
    { "_id" : 1, "username" : "mengday", "age" : 18 }
    { "_id" : 2, "username" : "mengday2", "age" : 16 }
    
    // 第三个参数:insertOrUpdate, 第四个参数:是否批量更新,true就是更新全部知足条件的文档
    > db.users.update({"age": {$gte: 16}}, {$set: {"age": 25}}, false, true)
    WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
    > db.users.find()
    { "_id" : 1, "username" : "mengday", "age" : 25 }
    { "_id" : 2, "username" : "mengday2", "age" : 25 }
    >
    
    // 查询而后更新,更新是总体替换, 若是想更新指定的字段使用$set修改器便可
    > db.users.findAndModify({
        query: { "username": "mengday"},
        update:{
               "age": 20,
                "username": "mengday20"
        }
    })
    {
            "_id" : 1,
            "username" : "mengday",
            "age" : 20,
            "birthday" : ISODate("2017-07-25T07:05:28.286Z")
    }
    > db.users.find()
    { "_id" : 1, "age" : 20, "username" : "mengday20" }