zoukankan      html  css  js  c++  java
  • 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()

  • 相关阅读:
    微信小程序HTTPS
    微信商城-1简介
    va_list
    Event log c++ sample.
    EVENT LOGGING
    Analyze Program Runtime Stack
    unknow table alarmtemp error when drop database (mysql)
    This application has request the Runtime to terminate it in an unusual way.
    How to check if Visual Studio 2005 SP1 is installed
    SetUnhandledExceptionFilter
  • 原文地址:https://www.cnblogs.com/mzc1997/p/9200547.html
Copyright © 2011-2022 走看看