powershell可以玩nosql数据库吗?答案是肯定的。只要这个数据库兼容.net,就可以很容易地被powershell使用。

发文初衷:世界上几乎没有讲powershell调用nosql的帖子,更没有讲powershell调用litedb的。只有寥寥powershell调用monodb的代码。

2017-10-08更新,文章和脚本支持litedb 4.0。有错误欢迎指正,谢谢。

powershell,nosql,litedb,bson,数据库,powershell传教士

---【存储格式】---

BSON是一种类似json的一种二进制形式的存储格式,简称Binary JSON。 它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。

{"hello":"world"} 这是一个BSON的例子, 其中"hello"是键名,它一般是string类型, 后面的"world"是键值,它的类型一般是string,double,array,binarydata等类型。

bson存储记录的最大单位是Document,可以把这个Document理解为一条记录。

根据litedb手册中的说明,限制为: 每个数据库小于2GB;每个document小于1MB;

即 litedb---》表---》bson_Document---》bson_Document---》键值对

由于值可以是空,所以每个bson_Document最小必须含有一个键。如:{"aaa":""}

---【应用场景,重要!】---

下为个人整理的应用场合,如有不妥,请斧正。

1 单机,绿色,中小量数据。单个库总内容小于1.8GB。

2 类似于sqlite,但sqlite是sql数据库,这个是nosql。即键值对,即每个库中数据只有一列。 即nosql数据库不适合存储行列数据。但数组,哈希表,和之间对象转换比sql数据库方便。 查询数据不用sql语法用函数。

3 需要存储变量名,变量值,的应用。如拿litedb数据库当ini文件用,当xml文件用。

---【图形管理工具】---

https://github.com/falahati/LiteDBViewer
https://github.com/JosefNemec/LiteDbExplorer     推荐

---【下载安装】---

1 官网为:             http://www.litedb.org/

2 github地址为:       https://github.com/mbdavid/LiteDB/

---【常用对象列表】---

LiteDB.LiteDatabase

LiteDB.BsonDocument

LiteDB.BsonMapper    bson键值对<--->对象转换者类

LiteDB.JsonSerializer  bson键值对<--->json键值对转换类。

LiteDB.BsonArray    bson数组

LiteDB.BsonValue    bson值 布尔,日期,guid,object对象,bson值,字节数组,int32,int64,double,字符串,list,字典,等。

LiteDB.LiteFileStorage 存储文件

LiteDB.Query      查询类

---【常用函数列表】---

摘自 http://www.cnblogs.com/asxinyu/p/dotnet_Opensource_project_LiteDB.html

------Query----- Query.All 返回所有的数据,可以使用指定的索引字段进行排序

Query.EQ 查找返回和指定字段值相等的数据

Query.LT/LTE 查找< 或 <= 某个值的数据

Query.GT/GTE 查找> 或 >= 某个值的数据

Query.Between 查找在指定区间范围内的数据

Query.In - 和SQL的in类似吧,查找和列表中值相等的数据

Query.Not - 和EQ相反,是不等于某个值的数据

Query.StartsWith 查找以某个字符串开头的数据

Query.Contains 查找包括某个字符串的数据,这个查询只扫描索引

Query.And 2个查询的交集

Query.Or 2个查询结果的并集

------linq-----

FindAll: 查找表或者集合中所有的结果记录

FindOne:返回第一个或者默认的结果

FindById: 通过索引返回单个结果

Find: 使用查询表达式或者linq表达式查询返回结果

Count() , Exists(),Min() , Max()

---【例子,重要!】---

简单来说就是用字符串,日期等,构造键值对。用n个键值对组成bson_Document,然后增删查改这个bson_Document。

下列脚本 win10 + powershell 5.1  + litedb 4.0 测试通过。

#  powershell_for_litedb  v4.0 2017-10-08
$script:脚本存储路径 = Split-Path -Parent $myinvocation.mycommand.path
$Env:Path += ";$script:脚本存储路径;" $script:数据库客户端目录 = $script:脚本存储路径
$script:数据库客户端文件名 = 'LiteDB.dll'
$script:数据库客户端绝对文件名 = $script:数据库客户端目录 + '\' + $script:数据库客户端文件名 $script:数据库文件名 = 'test001.db'
$script:数据库绝对文件名 = $script:数据库客户端目录 + '\' + $script:数据库文件名 if (test-path $script:数据库客户端绝对文件名)
{
try
{
Add-Type -LiteralPath $script:数据库客户端绝对文件名
write-host "---LiteDB程序载入完成---"
}
catch [Exception]
{
$error[0].Exception.LoaderExceptions
Write-Error "加载 $script:数据库客户端文件名 出错!"
exit 2
}
}
else
{
Write-Error "找不到 $script:数据库客户端文件名 !"
exit 1
} $数据库001 = [LiteDB.LiteDatabase]::new($script:数据库绝对文件名)
[string]$查询表名 = $数据库001.GetCollectionNames()
if ($查询表名 -eq "")
{
write-host "空数据库,无表"
}
else
{
$查询表名
} #打开表,没有的话新建表
$表001 = $数据库001.GetCollection("aaaa")
#$查询结果 = $表001.findall()
#$查询结果 # ---------------插入-----------------
$字符串 = 'aa'
$数字 = 123
$日期 = get-date
$真假 = $true
$数组 = "a","","kkk" $哈希表2 = @{
name = $字符串;
age = $数字 ;
bron = $日期 ;
sex = $真假 ;
array = $数组;
嘻嘻 = '哈哈'
} $json_哈希表2 = ConvertTo-Json -InputObject $哈希表2
$bson_哈希表2 = [LiteDB.JsonSerializer]::Deserialize($json_哈希表2)
$bson_哈希表2["_id"] = [LiteDB.ObjectId]::NewObjectId() #必须给bson_document,建一个id。 $表001.Insert($bson_哈希表2) # -------------插入键值对-------------
[LiteDB.BsonValue]$值2 = 'powershell 传教士 原创文章 2017-10-08,允许转载,但必须保留名字和出处,否则追究法律责任传教士。初稿,有错误欢迎指正,谢谢。'
$键2 = '声明'
$bson_Document = [LiteDB.BsonDocument]::new()
$bson_Document["_id"] = [LiteDB.ObjectId]::NewObjectId()
$null = $bson_Document.add($键2,$值2)
$表001.Insert($bson_Document) #------------------查询--------------------
#查询必须输入键名,键值作为参数。
#返回的都是bson_Document,转换成json,再转换成哈希表对象。再取值。
$查询结果1 = $表001.find([LiteDB.query]::eq("name","aa"))
"---1---"
$查询结果1 $查询结果2 = $表001.find([LiteDB.query]::gt("age",""))
"---2---"
$查询结果2 $查询结果3 = $表001.find([LiteDB.query]::StartsWith("嘻嘻","哈"))
"---3---"
$查询结果3

DotNet开源大本营  写的两篇 litedb的介绍帖子

.NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB

.NET平台开源项目速览(7)关于NoSQL数据库LiteDB的分页查询解决过程

powershell玩转litedb数据库-第二版的更多相关文章

  1. powershell玩转litedb数据库

    powershell可以玩nosql数据库吗?答案是肯定的.只要这个数据库兼容.net,就可以很容易地被powershell使用. 发文初衷:世界上几乎没有讲powershell调用nosql的帖子, ...

  2. powershell玩转sqlite数据库

    脚本经常需要处理文本,有时候是行列整齐文本.那么powershell脚本处理行列文本有几种方法呢?一种是excel,另外的一些是?access?sqlite? sqlite是一个很小巧的,很方便嵌入到 ...

  3. (转载)持续集成(第二版)[来自:Martin Fowler]

    转载自:iTech的博客 持续集成(第二版) 作者:Martin Fowler 译者:雷镇 持续集成 是一种软件开发实践.在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以 ...

  4. Lucene.net站内搜索—6、站内搜索第二版

    目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...

  5. python核心编程第二版笔记

    python核心编程第二版笔记由网友提供:open168 python核心编程--笔记(很详细,建议收藏) 解释器options:1.1 –d   提供调试输出1.2 –O   生成优化的字节码(生成 ...

  6. js仿百度文库文档上传页面的分类选择器_第二版

    仿百度文库文档上传页面的多级联动分类选择器第二版,支持在一个页面同一时候使用多个分类选择器. 此版本号把HTML,CSS,以及图片都封装到"category.js"中.解决因文件路 ...

  7. 简单的web三层架构系统【第二版】

    昨天写了 web三层架构的第一版,准确的说是三层架构的前期,顶多算是个二层架构,要慢慢完善. 第一版里,程序虽说能运行起来,但是有一个缺陷,就是里面的SQL语句,是使用的拼接字符进行执行.这样安全系数 ...

  8. JavaScript 多级联动浮动(下拉)菜单 (第二版)

    JavaScript 多级联动浮动(下拉)菜单 (第二版)   上一个版本(第一版请看这里)基本实现了多级联动和浮动菜单的功能,但效果不是太好,使用麻烦还有些bug,实用性不高.这次除了修改已发现的问 ...

  9. 《代码大全(第二版)》【PDF】下载

    <代码大全(第二版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382264 内容简介 <代码大全(第2版)>是著 ...

随机推荐

  1. Linux 各种软件的安装 - svn

    首先感谢这篇博文 https://www.cnblogs.com/mymelon/p/5483215.html 按照他的配置,svn顺利搭好. 1:yum -y install subversion ...

  2. 十分钟带你理解Kubernetes核心概念

    什么是Kubernetes? Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展.如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成K ...

  3. 雷林鹏分享:使用 CSS 显示 XML

    使用 CSS 显示 XML 通过使用 CSS(Cascading Style Sheets 层叠样式表),您可以添加显示信息到 XML 文档中. 使用 CSS 显示您的 XML? 使用 CSS 来格式 ...

  4. English trip V1 - 20.Look at me 看着我 Teacher:Solo Key: 声调(英语默认就声调[rising]和降调[falling]两种)

    In this lesson you will learn to describe a person. 课上内容(Lesson) appearance  -> ap pea ran ce  外貌 ...

  5. 关于Androidstudio无法获取到所有的SDk版本,需要挂国内镜像的问题

    由于墙的原因 我们在使用AndroidStudio的时候SDK Manager无法获取到所有的版本 需要我们设置下使用国内的镜像 ****首先打开Android SDK Manager  然后按照如图 ...

  6. 02linux 基本命令

    系统环境变量的设置 以nginx为例: 方式一: ~/.bash_profile  这是个人的 /etc/profile 为系统的环境变量 vim /etc/profile.d/nginx.sh #在 ...

  7. 在项目中使用react

    1. 运行 ’cnpm i react react-dom -S' 安装包 react:专门用于创建组件和虚拟DOM,同时组件的生命周期都在这个包中 react-dom:专门进行DOM操作,主要应用场 ...

  8. adb 转自github https://github.com/mzlogin/awesome-adb

    基本用法 命令语法 adb 命令的基本语法如下: adb [-d|-e|-s <serialNumber>] <command> 如果只有一个设备/模拟器连接时,可以省略掉 [ ...

  9. 在react+redux+axios项目中使用async/await

    Async/Await Async/Await是尚未正式公布的ES7标准新特性.简而言之,就是让你以同步方法的思维编写异步代码.对于前端,异步任务代码的编写经历了 callback 到现在流行的 Pr ...

  10. zend framwork项目基本操作

    1.首先,我们做项目是采用db的方式来编写sql语句的. 2.查询: fetchOne()   查询一个字段,如果没有指定就只查询第一个字段,只能得到一个值. fetchRow()    查询一行数据 ...