程序猿

mongoDB

2020-12-15  本文已影响0人  voidFan

mongoDB基础

MongoDB简介

一个开源文档数据库,提供高性能、高可用性和自动扩展的功能。MongoDB 是用C++语言编写的非关系型数据库。使用高效的二进制数据存储,文件存储格式为BSON (一种JSON 的扩展)等。MongoDB 支持各种编程语言,包括Python、Java、C++、GO、PHP等。
MongoDB特性

CURD增删改查,这是数据库最基本的功能,查询还支持全文检索,GEO地理位置查询等。

Aggregation类似MySQL中的count、sum、group by

aggregation实例

db.orders.aggregate([
    {$match:{status:"A"}},
    {$group:{_id:"$cost_id", total:{$sum:"$amount"}}}
])

聚合内置了很多函数,使用好了这些函数我们就可以统计出我们想要的数据。

实例一

db.getCollection('A_collection').aggregate({
    $addFields:{
      "name":{
         $cond:[{$ne:["$alias", undefined]},"$alias","$host_name"]
      }
    },
    {
      $project:{
         "name":1
      }
    } 
})  //collection的alias字段是否存在,如果存在,就取alias,否则取host_name字段

实例二

{ "_id" : 1, "item" : "abc1", qty: 300 }
{ "_id" : 2, "item" : "abc2", qty: 200 }
{ "_id" : 3, "item" : "xyz1", qty: 250 }
//根据qty的值来生成新的数据(值)
db.inventory.aggregate([
  {$project:
       { item: 1,
         discount: {$cond: { if: { $gte: [ "$qty", 250 ] }, then: 30, else: 20 }}
       }
  }])
//output  discount是新的键,它根据cond的if判断后,分别被赋上了相应的值
 { "_id" : 1, "item" : "abc1", "discount" : 30 }
 { "_id" : 2, "item" : "abc2", "discount" : 20 }
 { "_id" : 3, "item" : "xyz1", "discount" : 30 }

BSON

MongoDB中的JSON文档存储在名为BSON(二进制编码的JSON)的二进制表示中。
与其他将JSON数据存储为简单字符串和数字的数据库不同,BSON编码扩展了JSON表示,
使其包含额外的类型,如int、long、date、浮点数和decimal128。这使得应用程序更容易可靠地处理、排序和比较数据。
连接MongoDB的Go驱动程序中有两大类型表示BSON数据:D和Raw。
类型D家族被用来简洁地构建使用本地Go类型的BSON对象。这对于构造传递给MongoDB的命令特别有用。D家族包括四类:

GridFS

GO语言操作mongoDB

https://www.cnblogs.com/Dr-wei/p/11742293.html

上一篇 下一篇

猜你喜欢

热点阅读