LiteDB 项目包含一个简单的控制台应用程序 (LiteDB.Shell.exe),可用于查看、更新以及测试你的数据,在处理你的数据库时非常有用。
在 v4 中,LiteDB 将对 shell 命令的支持退回到 LiteDB.dll中,因此,现在,shell 命令是 LiteDB 的一部分 (不只是一个外置工具)。
参考
Shell 控制台命令
这里的命令只在控制台应用程序 LiteDB.Shell.exe 中有效:
help [full]- 显示基础或全部命令的帮助信息open <filename|connectionString>- 打开新数据库。如果不存在,创建一个新的。可以传递一个连接字符串,可以使用所有选项 (像 password 或 timeout)close- 关闭当前数据库pretty- 以优美的格式显示 JSONed- 用 notepad.exe 打开最后一条命令编辑run <filename>- 读取 filename,并添加每行为一条新命令spool [on|off]- 打开/关闭所有命令的输出管道timer- 在命令提示符下显示一个定时器--- 注释 (忽略行的剩余部分)/<command>/- 支持多行命令upgrade /<filename|connectionString>/- 从 LiteDB v2 版本升级数据文件version- 显示 LiteDB 程序集版本quit- 退出 shell 应用程序
Collections 命令
语法: db.<collection>.<command>
insert <jsonDoc>- 使用查询过滤器语法查找一个文档db.customer.insert { _id:1, Name: "John Doe", Age: 38 }db.customer.insert { Name: "John Doe" }- 自动创建 Id 为ObjectId
bulk <filename.json>- 插入一个 JSON 文件内的所有文档。JSON 文件必须是文档的一个 JSON 数组db.customer.bulk my-documents.json
update <jsonDoc>- 使用_id更新一个已存在的文档db.customer.update { _id:1, Name: "Joana Doe", Age: 29 }
update <field|path>=<value|expression>, [..] [where <filter>]- 使用过滤器查询更新多个文档字段db.customer.update Name = "John" where _id = 1db.customer.update Age = $.Age + 1 where _id > 0db.customer.update Addresses[*].Full = Addresses[*].Street + ", " + Addresses[*].Number
delete <filter>- 使用过滤器语法删除文档db.customer.delete _id = 1db.customer.delete Name like "Jo"
ensureIndex <field|name> [unique] [using <expr>]- 在集合的字段上创建一个新索引。支持 json 选项,参考索引db.customers.ensureIndex Name unique- 创建一个唯一索引db.customers.ensureIndex NameLower using LOWER($.Name)
indexes- 列出集合中的所有索引db.customers.indexes
dropIndex <field|name>- 删除一个索引db.customers.dropIndex Name
drop- 删除一个集合以及其中的所有文档。如果不存在返回 falsedb.customer.drop
rename- 重命名一个集合。如果成功返回 true,如果出现一个错误返回 falsedb.customer.rename my_customers
count <filter>- 使用定义的过滤器为文档计数。参考如下的<filter>语法db.customer.count Name = "John Doe"db.customer.count Age between [20, 40]
min <field>- 获取字段索引的最低值db.customer.min _iddb.customer.min Age
max <field>- 获取字段索引的最高值db.customer.max _iddb.customer.max Age
find [filter][skip N][limit M][includes p0, p1, ..]- 使用查询过滤语法查找文档。参考如下的<filter>语法db.customer.finddb.customer.find limit 10db.customer.find Name = "John Doe"db.customer.find Age between [20, 40]db.customer.find Name LIKE "John" and Age > 30db.customer.find skip 10 limit 10 includes $.Orders[*]
select [path|expr] as Name1, [path|expr] [where <filter>][skip N][limit M][include p0, p1, ..]- 查找并转换文档db.customer.select $ where Age > 30db.customer.select LOWER($.Addresses[*].Street) where Age > 30db.customer.select $.Name as Name, ARRAY($.Addresses[@.City = 'NY']) as addresses where Age > 30
<filter>=<field> [=|>|>=|<|<=|!=|like|contains|in|between] <jsonValue><filter>=<filter> [and|or] <filter><jsonDoc>和<jsonValue>是 JSON 扩展格式。参考数据结构.
FileStorage
语法: fs.<command>
upload <fileId> <filename>- 上传一个本地文件到数据库。如果有 fileId,覆盖数据内容fs.upload my-file picture.jpgfs.upload $/photos/pic-001 C:\Temp\mypictures\picture-1.jpg
download <fileId> <filename>- 下载存在的数据库文件到一个本地文件。fs.download my-file copy-picture.jpgfs.download $/photos/pic-001 C:\Temp\mypictures\copy-picture-1.jpg
update <fileId> <jsonDoc>- 更新文件元数据fs.update my-file { user: "John", machine: "srv001" }
delete <fileId>- 删除一个文件fs.delete my-file
find [fileId]- 列出数据库中的所有文件,或以 fileId 参数开头的文件fs.findfs.find $/photos/
数据库实用工具
语法: db.<command>
userversion [N]- 获取/设置用户数据库文件版本shrink [password]- 通过删除空白页面和修改密码 (可选) 来收缩数据文件。如果未提供密码,新数据文件不再加密。
