zoukankan      html  css  js  c++  java
  • MongoDB 基本操作和聚合操作

    一 . MongoDB 基本操作

     基本操作可以简单分为查询、插入、更新、删除。

    1 文档查询

    作用 MySQL SQL  MongoDB 
    所有记录  SELECT * FROM users;  db.users.find(); 
    age =18  SELECT * FROM users WHERE age = 18;  db.users.find({“age”:18}); 
    筛选字段 SELECT age FROM users WHERE age = 18;  db.users.find({“age”:18},{age:1}); 
    排序 SELECT * FROM users ORDER BY name ASC  db.users.find().sort({name:1}); 
    比较 SELECT * FROM users WHERE age > 18;  db.users.find({“age”:{$gt:18}}); 
    正则  SELECT * FROM users WHERE name LIKE zha;  db.users.find({“name”:/^zha/});
    忽略  SELECT * FROM users LIMIT 10 SKIP 20;  db.users.find().limit(10).skip(20); 
    or  SELECT * FROM users WHERE a=1 or b=2;  db.users.find({$or : [{ a : 1} , {b : 2}]});
    distinct  SELECT DISTINCT name FROM users; db.users.distinct(‘name'); 
    count  SELECT COUNT(name) FROM users;  db.users.find({name: {'$exists': true}}).count(); 

    2.文档插入

    作用  操作指令(案例) 
    单文档插入  db.inventory.insertOne( { item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } } ) 
    多文档批量插入

    db.inventory.insertMany([ { item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } },

    { item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } },

    { item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } } ]) 

    文档大量插入时,通过多文档批量插入的形式可以大大提高性能,但是MongoDB 4.0 之前的版本是单文档事务型,所以,在多文档批量插入时,不能保证所有文档操作的原子性,即插入过程中,如果不幸出现了系统问题,有可能部分文档插入成功,而部分文档插入失败。

    3.文档更新

    文档更新主要有两种形式,一种是替换修改,一种是通过操作符修改。后者是常见的修改方式,在此主要讲解后者。

    操作符  操作符描述
    $inc  根据给定的值增加字段
    $set  设置字段给定的值
    $unset  取消设置字段
    $rename 重命名字段为给定的值
    $setOnInsert

    在upsert中,只在插入时设置字段;

    如果要更新的文档存在那么$setOnInsert操作符不做任何处理

    $bit 只执行按位更新字段

    关于数组数据的更新操作符

    数组操作符 数组操作符描述
    $push 添加值到数组中
    $addToSet  添加值到数组中,重复了也不处理
    $pop  从数组中删除第一个或最后一个值
    $pull 从数组中删除匹配查询条件的值
    $eash 与$push和$addToSet一起使用来操作多个值
    $slice 与$push和$each一起使用来缩小更新后数组的大小

    4.文档删除

    集合数据的删除主要通过remove的命令来删除,类似于关系型数据库中的delete。

    二 聚合操作

    MySQL MongoDB 功能描述
    select  $project  指定输出文档里的字段 
    where  $match  选择要处理的文档,与find()类似
    group by  $group 根据key来分组文档 
    having  $match  刷选文档
    limit  $limit  限制传递给下一步的文档数量
    order by  $sort  排序文档 
    count/sum  $sum  统计 
    join  $unwind  扩展数组,为每个数组入口生成一个输出文档 
    join  $look up  表关联 
    skip  $skip  跳过一定数据量的文档 
  • 相关阅读:
    什么是P问题、NP问题和NPC问题
    Ubuntu 14.04 亮度BUG解决方案
    彻底理解Java中this指针
    Eclipse快捷键大全
    JAVA文件读写方法和性能比较总结
    Java下static关键字用法详解
    LeetCode: Gray Code
    LeetCode: 4sum
    LeetCode:3Sum Closest
    LeetCode:Remove Element
  • 原文地址:https://www.cnblogs.com/xuliuzai/p/9859729.html
Copyright © 2011-2022 走看看