MongoDB ObjectId
在前面几个章节中我们已经使用了MongoDB 的对象 Id(ObjectId)。在本章节中,我们将了解的ObjectId的结构。ObjectId 是一个12字节 BSON 类型数据,有以下格式:
前4个字节表示时间戳接下来的3个字节是机器标识码紧接的两个字节由进程id组成(PID)最后三个字节是随机数。
MongoDB中存储的文档必须有一个”_id”键。这个键的值可以是任何类型的,默认是个ObjectId对象。在一个集合里面,每个文档都有唯一的”_id”值,来确保集合里面每个文档都能被唯一标识。MongoDB采用ObjectId,而不是其他比较常规的做法(比如自动增加的主键)的主要原因,因为在多个服务器上同步自动增加主键值既费力还费时。
创建新的ObjectId使用以下代码生成新的ObjectId:
newObjectId = ObjectId()
上面的语句返回以下唯一生成的id:
ObjectId(“5349b4ddd2781d08c09890f3”)
你也可以使用生成的id来取代MongoDB自动生成的ObjectId:
myO ...
MongoDB Map ReduceMap-Reduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE)。MongoDB提供的Map-Reduce非常灵活,对于大规模数据分析也相当实用。
MapReduce 命令以下是MapReduce的基本语法:
db.collection.mapReduce( function() {emit(key,value);}, //map 函数 function(key,values) {return reduceFunction}, //reduce 函数 { out: collection, query: document, sort: document, limit: number })
使用 MapReduce 要实现两个函数 Map 函数和 Reduce 函数,Map 函数调用 emit(key, value),遍历 collection 中所有的记录, 将 key 与 val ...
MongoDB GridFSGridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片、音频、视频等)。GridFS 也是文件存储的一种方式,但是它是存储在MonoDB的集合中。GridFS 可以更好的存储大于16M的文件。GridFS 会将大文件对象分割成多个小的chunk(文件片段),一般为256k/个,每个chunk将作为MongoDB的一个文档(document)被存储在chunks集合中。
GridFS 用两个集合来存储一个文件:fs.files与fs.chunks。每个文件的实际内容被存在chunks(二进制数据)中,和文件有关的meta数据(filename,content_type,还有用户自定义的属性)将会被存在files集合中。
以下是简单的 fs.files 集合文档:
{ “filename”: “test.txt”, “chunkSize”: NumberInt(261120), “uploadDate”: ISODate(“2014-04-13T11:32:33.557Z”), “md5”: “7b762939 ...
MongoDB Limit 与 Skip 方法MongoDB Limit() 方法如果你需要在 MongoDB 中读取指定数量的数据记录,可以使用 MongoDB 的 limit() 方法,如果想跳过指定数量的文档读取数据可以使用 skip() 方法。
limit() 方法用于限制查询结果返回的文档数量,而 skip() 方法用于跳过指定数量的文档。这两个方法通常一起使用,可以用来实现分页查询或在大型数据集上进行分批处理。limit() 方法limit() 方法用于限制查询结果返回的文档数量。语法limit() 方法基本语法如下所示:
db.collection.find().limit():返回的文档数量。实例// 返回前 10 个文档db.myCollection.find().limit(10);
实例集合 col 中的数据如下:
{ “_id” : ObjectId(“56066542ade2f21f36b0313a”), “title” : “PHP 教程”, “description” : “PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。” ...
MongoDB - 连接在本教程我们将讨论 MongoDB 的不同连接方式。启动 MongoDB 服务在前面的教程中,我们已经讨论了如何启动 MongoDB 服务,你只需要在 MongoDB 安装目录的 bin 目录下执行 mongodb 即可。执行启动操作后,mongodb 在输出一些必要信息后不会输出任何信息,之后就等待连接的建立,当连接被建立后,就会开始打印日志信息。你可以使用 MongoDB shell 来连接 MongoDB 服务器。你也可以使用 PHP 来连接 MongoDB。本教程我们会使用 MongoDB shell 来连接 Mongodb 服务,之后的章节我们将会介绍如何通过 PHP、Python 以及 Node.js 来连接 MongoDB 服务。标准 URI 连接语法:
mongodb://[username:password@]host1[:port1][,…hostN[:portN]][/[defaultauthdb][?options]]mongodb://:协议头,表示使用 MongoDB。[usernam ...
MongoDB $type 操作符在 MongoDB 中,$type 操作符用于查询具有指定类型的字段的文档。
MongoDB 的 $type 操作符用于查询字段的 BSON 数据类型。它允许您指定一个或多个类型,并返回匹配这些类型的文档。以下是 $type 操作符的详细介绍和示例。语法:db.collection.find({ field: { $type: } })field:要检查类型的字段。type:指定的 BSON 类型,可以是类型的数字代码或类型名称的字符串。BSON 类型以下是常见的 BSON 类型及其对应的数字代码和字符串名称:
类型代码类型名称1double2string3object4array5binData6undefined7objectId8bool9date10null11regex12dbPointer13javascript14symbol15javascriptWithScope16int17timestamp18long19decimal255minKey127maxKey实例
查找字段类型为字符串的文档:db.myCollection.find ...
Mac OSX 平台安装 MongoDB
MongoDB 提供了 OSX 平台上 64 位的安装包,你可以在官网下载安装包。下载地址:https://www.mongodb.com/try/download/community
从 MongoDB 3.0 版本开始只支持 OS X 10.7 (Lion) 版本及更新版本的系统。
接下来我们使用 curl 命令来下载安装:
进入 /usr/localcd /usr/local
下载sudo curl -O https://fastdl.mongodb.org/osx/mongodb-osx-ssl-x86_64-4.0.9.tgz
解压sudo tar -zxvf mongodb-osx-ssl-x86_64-4.0.9.tgz
重命名为 mongodb 目录sudo mv mongodb-osx-x86_64-4.0.9/ mongodb
安装完成后,我们可以把 MongoDB 的二进制命令文件目录(安装目录/bin)添加到 PATH 路径中:
export PATH= ...
Linux平台安装MongoDBMongoDB 提供了 linux 各个发行版本 64 位的安装包,你可以在官网下载安装包。安装前我们需要安装各个 Linux 平台依赖包。Red Hat/CentOS:sudo yum install libcurl opensslUbuntu 18.04 LTS (“Bionic”)/Debian 10 “Buster”:sudo apt-get install libcurl4 opensslUbuntu 16.04 LTS (“Xenial”)/Debian 9 “Stretch”:sudo apt-get install libcurl3 opensslMongoDB 源码下载地址:https://www.mongodb.com/try/download/community
这里我们选择 tgz 下载,下载完安装包,并解压 tgz(以下演示的是 64 位 Linux上的安装) 。
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu160 ...
Sourcetree 使用教程
Git 有很多图形界面工具 ( GUI ),比如 SourceTree、Github Desktop、TortoiseGit 等。SourceTree 是一个 Git 客户端管理工具,适用于 Windows 和 Mac 系统。SourceTree 简化了开发者与代码仓库之间的 Git 操作方式,我们可以通过界面菜单很方便的处理 Git 操作,而不需要通过命令。通过 SourceTree,我们可以管理所有的 Git 库,无论是远程还是本地的。SourceTree 支持 Bitbucket、GitHub 以及 Gitlab 等远程仓库。
Sourcetree 安装我们可以在 Sourcetree 官网 https://www.sourcetreeapp.com/ 直接点击下载按钮来下载:
其他版本可以查看:https://www.sourcetreeapp.com/download-archives下载完成后,解压 ZIP 文件,双击应用程序文件(Windows 为 EXE 或 Mac 为 DMG)进行安装。安装过程中,我们只需要同意 Atlassian ...
Git 远程仓库(Github)Git 并不像 SVN 那样有个中心服务器。目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作。
你就需要将数据放到一台其他开发人员能够连接的服务器上。本例使用了 Github 作为远程仓库,你可以先阅读我们的 Github 简明教程。
添加远程库要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,命令格式如下:
git remote add [shortname] [url]
本例以 Github 为例作为远程仓库,如果你没有 Github 可以在官网 https://github.com/注册。
由于你的本地 Git 仓库和 GitHub 仓库之间的传输是通过SSH加密的,所以我们需要配置验证信息:使用以下命令生成 SSH Key:$ ssh-keygen -t rsa -C “youremail@example. ...