mongodb之开发相关
关于mongodb,有几个大的特点:
1,用mongo shell的话,它的语法类似于Linux中的命令
2,mongodb中的函数参数,返回结果基本上用 JSON表示,所以要用JSON的思维来学习mongodb
============关于引用
Mongodb不支持Join操作,代替的方式是引用,
===方式一,手工引用,如下:
就是一个document中的字段值为另一个document的_id,例子:
original_id=ObjectId()
db.places.insert(
{
"_id":original_id,
"name":"H.K",
"url":"aa.bb.cc.aspx"
}
)
db.people.insert(
{
"name":"jonh",
"place_id":original_id,
"url":"aa.bb.cc.aspx/test"
}
)
===方式二:DBRef引用,方式如下:
{id::<value>,$db:<value>}
其中:
$ref 是引用的collection的名字
$id 是引用的document的_id
$db 是引用的数据名
==================ObjectId
12自己的BSON类型,组成如下:
4 byte timestamp; 3 byte machine identifier; 2 byte process id, 3 byte counter.
mongodb默认用它做主键,好处如下:
1)能得到这个_id的创建时间,通过getTimestamp()方法可以得到
2)通过_id和创建时间排序的效果一样。
===ObjectId()
这个 mongo shell 提供的包装类,它能产生一个新的ObjectId,属性和方法如下:
1 str 该_id的值,不过是用16进制字符串表示的。
2 getTimestamp() 返回ObjectId() 对象的创建时间,返回类型是Date
3 toString() [V2.2及以后] ObjectId对象的字符串表示,格式如下: ObjectId(...)
4 valueOf() [V2.2及以后] 和str属性的值相同
打开命令行工具,连接到mongodb,然后输入如下命令:
x=ObjectId() 显示结果如下:
==返回ObjectId()的时间戳,如下:
==返回ObjectId()的字符串,如下:
==返回ObjectId()的值,如下:
==========Capped Collection
可覆盖的Collection:超过指定的空间大小后会覆盖最开始的数据,周而复始。
它的特定:1)插入的顺序就是它在磁盘上的顺序。2)更新时如果让document变大了,那么会更新失败。
3)不能删除Capped Document的数据,如果要删除所有数据,可以使用 emptycapped 命令
比较适合:1,可循环的日志,比如规定500M大小的日志,超过500M后会删除最开始的日志,用现在的日志去记录。
2,Cache,不说了,你懂的。
===创建 Capped Collection
必须显式使用命令 createCollection()来创建;在创建时必须指定一个固定大小(以字节为单位),例子:
db.createCollection("mycoll",{capped:true,size:10000})
==查询命令:
db.cappedCollection.find().sort($natural:-1) //表示按照插入顺序的反序排列结果(默认按查询顺序排列结果)
==检查一个collection是否是capped的:
db.collection.isCapped()
==将一个collection转为capped的:
db.runCommand({"convertToCapped":"mycoll",size:10000})
作者:imap
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架