• MongoDB文档的基本操作


    1. MongoDB的安装方法

    1)下载MongoDB 相应的版本;

    2)设置数据文件和日志文件的存放目录;

    3)启动MongoDB服务;

    4)将MongoDB作为服务启动。

    2. MongoDB文档基本操作的方法

    1)插入并保存文档;

    2)删除文档;

    3)修改文档。

    一、数据库操作

    use database_name,如果数据库不存在将创建一个新的数据库;

                      否则将返回现有的数据库。

    db                                              --显示当前选择的数据库

    use mydb                                        --创建或切换数据库

    db

    show dbs                                        --显示所有数据库,没有刚建立的mydb

    db.movie.insert({"name":"tutorials yiibai"})    --要显示的数据库,需要把它插入至少一个文件。

    show dbs

    db.dropDatabase()                               --删除数据库

    show dbs

    db命令显示的还是mydb,但是没有数据。

    二、集合操作

    a.显式创建集合

    db.createCollection(name, options)name 是要创建的集合的名称. Options 是一个文件,用于指定配置的集合

    db.createCollection("movie")

    show collections

    db.movie.drop()

    show collections

    b.隐式创建集合

    db.movie.insert({"name":"tutorials yiibai"})

    show collections                           --查询所有集合

    db.getCollectionNames()                    --查询所有集合

    db.movie.count()                           --查看集合中文档总数据量

    db.movie.dataSize()                        --查看集合空间大小

    db.movie.getDB()                           --查看集合所在数据库

    db.movie.stats()                           --查看当前集合状态

    db.movie.renameCollection("movies")        --集合重命名   

    show collections

    db.movies.copyTo("movie")                  --集合复制

    db.movies.drop()                           --删除集合

    db.movie.help()                            --查看集合帮助

    db.getCollection("movie")                  --得到指定名称的聚集集合

    db.printCollectionStats()                  --显示当前db所有聚集索引的状态

    三、文档操作

    3.文档操作-插入操作

    1.插入操作

    a.单个插入

    db.movie.insert({"name":"HuanLeSong","Times":10000})

    db.movie.insert({"name":"SanJie","Times":20000})

    db.movie.insert({"name":"SanJie","Address":"China"})

    db.movie.find()

    movieVar1 = {"name":"HuanLeSong","Times":10000};  --创建文档变量,对象

    movieVar2 = {"name":"SanJie","Times":20000};

    movieVar3 = {"name":"SanJie","Address":"China"};

    db.movie.insert(movieVar1)

    db.movie.insert(movieVar2)

    db.movie.insert(movieVar3)

    db.movie.find()

    db.movie.insert({"_id":08001,"name":"zhangsan"})

    db.movie.find()

    db.movie.insert({"_id":08001,"name":"lisi"})

    db.movie.save({"_id":08001,"name":"lisi"})

    db.movie.find()

    InsertSave的区别是:如果插入的集合的“_id”值,在集合中已经存在,Insert执行插入操作会报异常,已经存在"_id"的键。用Save如果系统中没有相同的"_id"就执行插入操作,有的话就执行覆盖掉原来的值。相当于修改操作。

    b.批量插入

    采用数组的方式

    db.movie.insert([{username:'aaa',password:'bbb',tel:'123123123'},{username:'bbb',password:'ccc',tel:'123123234'}]);

    db.movie.find()

    2.删除操作

    db.movie.find()

    db.movie.remove({"name":"HuanLeSong"})  --按条件删除

    db.movie.find()

    db.movie.remove({})                     --删除所有(集合本身不删除)

    db.movie.find()

    show collections

    db.movie.drop()                         --删除所有(集合带文档)

    db.movie.find()

    show collections

    remove({})drop()的区别:

    remove({}):删除所有文档,但不会删除集合本身,原索引也会保留

    drop():删除整个集合,包括索引,然后重新创建集合和建立索引

    3.修改操作

    文档存入数据库后,就可以用update方法来修改它,update有两个参数一个是查询文档,找出需要更新的文档。一个是修改文档,描述对找到的文档做哪些修改

    更新操作是原子的,若是两个更新同时发生,先到达服务器的先执行。

    a.替换更新update

    db.movie.update({username:"bbb"},{password:"abc"});

    db.movie.find()

    b.修改器更新

    I.$set修改器

    $set用来指定一个键的值,如果这个键不存在,就创建它。并且,只修改第一个

    db.movie.update({username:"aaa"},{$set:{password:"*****"}});

    db.movie.find()

    II.$unset修改器

    $unset来删除一个键

    db.movie.update({username:"aaa"},{$unset:{tel:1}});

    db.movie.find()

    III.$inc修改器

    $inc用来增加已有的键值,或者在键值不存在时创建。

    db.movie.update({username:"aaa"},{$inc:{age:2}});  --键值age不存在,创建age并赋值2

    db.movie.find()

    db.movie.update({username:'aaa'},{$inc:{age:2}});   --在原有的值上 age+2

    db.movie.find()

    IV.upsert

    update的第三个参数设置为true的时候,为upsert模式

    upsert是一个特殊的更新。当没有文档符合更新条件,就会以这个条件创建新的文档。

    db.movie.update({username:'aaa'},{$set:{abc:123}},true)        --当没有文档符合更新条件,就会以这个条件创建新的文档

    db.movie.find()

    db.movie.update({username:'aaa'},{$set:{abc:234}},true)        --当文档符合更新条件,就会更新文档

    db.movie.find()

    V.数组修改器

    数组修改器只能用于数组。

    $push会像已有的数组末尾添加一个元素

    $pop会删除一个元素

    db.movie.update({username:'aaa'},{$push:{arr:1}});

    db.movie.find()

    db.movie.update({username:'aaa'},{$push:{arr:2}});

    db.movie.find()

    db.movie.update({username:'aaa'},{$push:{arr:5}});

    db.movie.find()

    db.movie.update({username:'aaa'},{$push:{arr:3}});

    db.movie.find()

    db.movie.update({username:'aaa'},{$pop:{arr:1}}); pop原本是正向删除数组最后一个元素,取负号后-后倒序删除

    db.movie.find()

    db.movie.update({username:'aaa'},{$pop:{arr:-1}});

    db.movie.find()

    VI.数组的定位修改器

    若是数组中多个值,我们只想修改其中的部分值,有两种方法操作数组中的值:通过位置和定位操作符($)

    数组下标是从0开始

    db.movie.update({username:'aaa'},{$set:{'arr.2':10}}); 数组第三个元素插入数值10

    db.movie.find()

    db.movie.update({'arr.2':10},{$set:{'arr.$':100}});  数组第三个元素替换为100

    db.movie.find()

    VII.多文档修改

    第四个参数设置为true

    db.movie.insert([{username:'aaa',password:'bbb',tel:'123123123'},{username:'bbb',password:'ccc',tel:'123123234'}]);

    db.movie.update({username:"aaa"},{$set:{password:"******"}},false,true);

    db.movie.find()

  • 相关阅读:
    G 面经 && Leetcode: Longest Repeating Character Replacement
    Leetcode: Reconstruct Original Digits from English
    Leetcode: Maximum XOR of Two Numbers in an Array
    Leetcode: Battleships in a Board
    Leetcode: Find All Anagrams in a String
    Leetcode: Pacific Atlantic Water Flow
    Leetcode: Partition Equal Subset Sum
    Leetcode: Third Maximum Number
    Leetcode: Arithmetic Slices
    Leetcode: Trapping Rain Water II
  • 原文地址:https://www.cnblogs.com/mzc1997/p/9200547.html
Copyright © 2020-2023  润新知