前言
该文章主要介绍本人对mongodb的配置使用以及在php方面的运用。
参考文档:
MongoDB文档说明
MongoDB第三方类库
(1)MongoDB的配置安装
-
Windows系统 :
windows环境安装教程 -
Linux系统 :
linux环境安装教程
(2)配置文件信息说明
参数说明:
systemLog.destination:MongoDB 将所有日志输出发送到的目的地。指定 file或syslog。如果指定file,则还必须指定 systemLog.path。
systemLog.logAppend:当或 实例重新启动时true,将新条目附加到现有日志文件的末尾。如果没有此选项,将备份现有日志并创建一个新文件。
systemLog.path:MongoDB日志文件
storage.dbPath:MongoDB数据存储路径
storage.journal.enabled:启用或禁用持久性日志以确保数据文件保持有效和可恢复。此选项仅在指定 storage.dbPath设置时适用。mongod默认启用日记功能。
processManagement.fork:启用在后台运行或进程的守护程序模式。默认情况下或不作为守护程序运行:通常您将运行或作为守护程序,通过使用 或使用处理守护进程的控制进程
net.port:端口号
net.bindIp:绑定的ip地址,默认为本机;可通过设置值为0.0.0.0允许所有ip连接;
以上为MongoDB配置文件的简单配置,更多配置信息详情请查看:
MongoDB配置文件相关参数说明
(3)MongoDB相关概念解析
MongDB术语 | 说明 |
---|---|
database | 数据库 |
collection | 数据表 |
document | 数据记录行/文档 |
field | 数据字段/域 |
index | 索引 |
(4)MongoDB类型
类型 | 说明 |
---|---|
Object ID | Documents 自生成的 _id |
String | 字符串,必须是utf-8 |
Boolean | 布尔值,true 或者false |
Integer | 整型,Int32 Int64 |
Double | 浮点数 (没有float类型,所有小数都是Double) |
Arrays | 数组或者列表 |
Object | 对象 |
Null | 空数据类型 |
Timestamp | 时间戳 |
Decimal128 | BSON十进制128类型 |
(5)MongoDB的CRUD操作实例
1、写入数据
(1)写入单个文档
shell:
db.inventory.insertOne(
{
item: "canvas", qty: 100, tags: ["cotton"], size: {
h: 28, w: 35.5, uom: "cm" } }
)
php:
$insertOneResult = $db->inventory->insertOne([
'item' => 'canvas',
'qty' => 100,
'tags' => ['cotton'],
'size' => ['h' => 28, 'w' => 35.5, 'uom' => 'cm'],
]);
(2)写入多个文档
shell:
db.inventory.insertMany([
{
item: "journal", qty: 25, tags: ["blank", "red"], size: {
h: 14, w: 21, uom: "cm" } },
{
item: "mat", qty: 85, tags: ["gray"], size: {
h: 27.9, w: 35.5, uom: "cm" } },
{
item: "mousepad", qty: 25, tags: ["gel", "blue"], size: {
h: 19, w: 22.85, uom: "cm" } }
])
php:
$insertManyResult = $db->inventory->insertMany([
[
'item' => 'journal',
'qty' => 25,
'tags' => ['blank', 'red'],
'size' => ['h' => 14, 'w' => 21, 'uom' => 'cm'],
],
[
'item' => 'mat',
'qty' => 85,
'tags' => ['gray'],
'size' => ['h' => 27.9, 'w' => 35.5, 'uom' => 'cm'],
],
[
'item' => 'mousepad',
'qty' => 25,
'tags' => ['gel', 'blue'],
'size' => ['h' => 19, 'w' => 22.85, 'uom' => 'cm'],
],
]);
注意:
(1)当集合不存在时,写入操作会创建该集合;
(2)在 MongoDB 中,存储在集合中的每个文档都需要一个唯一的 _id字段作为主键。如果插入的文档省略了该_id字段,MongoDB 驱动程序会自动为该字段生成一个ObjectId_id。
2、查询
集合inventory中有如下数据
db.inventory.insertMany([
{
item: "journal", qty: 25, size: {
h: 14, w: 21, uom: "cm" }, status: "A" },
{
item: "notebook", qty: 50, size: {
h: 8.5, w: 11, uom: "in" }, status: "A" },
{
item: "paper", qty: 100, size: {
h: 8.5, w: 11, uom: "in" }, status: "D" },
{
item: "planner", qty: 75, size: {
h: 22.85, w: 30, uom: "cm" }, status: "D" },
{
item: "postcard", qty: 45, size: {
h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);
方法 | 说明 |
---|---|
find() | 查询匹配的所有文档 |
findOne() | 查询匹配的第一条文档 |
1)查询所有数据
shell:
db.inventory.find({
})
php:
$cursor = $db->inventory->find([]);
2)指定相等条件
示例:从inventory集合中选择statusequals为"D"的所有文档。
shell:
db.inventory.find( {
status: "D" } )
php:
$cursor = $db->inventory->find(['status' => 'D']);
3)使用查询运算符指定条件
示例:从inventory 集合中检索status等于"A"or"D"的所有文档
shell:
db.inventory.find( {
status: {
$in: [ "A", "D" ] } } )
php:
$cursor = $db->inventory->find(['status' => ['$in' => ['A', 'D']]]);
有关 MongoDB 查询运算符的完整列表,请参阅查询和投影运算符文档
4)指定AND条件
示例:检索inventory 集合中status等于"A" 和 qty小于30的所有文档
shell:
db.inventory.find( {
status: "A", qty: {
$lt: 30