首页 > 数据库 >mongodb 入门 和 php示例

mongodb 入门 和 php示例

时间:2023-07-13 22:14:33浏览次数:48  
标签:示例 mongodb db collection writeConcern bulk MongoDB collation php

内容太多了,感觉不好写,就写点入门的吧,其他参考 参考_MonogDB 中文网 (mongodb.net.cn) 虽然内容是机器翻译的,但也还好,基本能看.   相关概念:   database 数据库 collection 集合,相当于数据库表 document 文档,相当于数据记录行  

docker run -d --name mongo -p 27017:27017 mongo
docker exec -it mongo bash

mongosh

查看当前数据库
db


查看数据库列表
show dbs


查看数据集列表
show tables
show collections


选择数据库: 数据库不存在也可以,而当插入数据后,数据库就会自动创建
use <database>


删除当前数据库
db.dropDatabase()
    创建集合或视图
db.createCollection(
    <name>,
    {
        capped: <boolean>,
        autoIndexId: <boolean>,
        size: <number>,
        max: <number>,
        storageEngine: <document>,
        validator: <document>,
        validationLevel: <string>,
        validationAction: <string>,
        indexOptionDefaults: <document>,
        viewOn: <string>,
        pipeline: <pipeline>,
        collation: <document>,
        writeConcern: <document>
    }
)
  删除集合
db.collection.drop()
  创建视图
db.createView(
  "<viewName>",
  "<source>",
  [<pipeline>],
  {
    "collation" : { <collation> }
  }
)


db.createCollection(
 "<viewName>",
  {
    "viewOn" : "<source>",
    "pipeline" : [<pipeline>],
    "collation" : { <collation> }
  }
)
  插入文档
db.collection.insert(
   <document or array of documents>,
   {
     writeConcern: <document>,
     ordered: true  //是否按顺序写入
   }
)


db.collection.insertOne(
   <document>,
   {
      writeConcern: <document>
   }
)


db.collection.insertMany(
   [ <document 1> , <document 2>, ... ],
   {
      writeConcern: <document>,
      ordered: <boolean>
   }
)
    查找文档
db.collection.find(
    query, //查询条件
    projection //返回的字段 { name:1, _id:0 } ,表示取 name 字段, 不要默认包含的 _id 字段
)


db.collection.findOne(
    query,
    projection
)
  更新文档
db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>, // 是否自动创建
     multi: <boolean>, // 是否更新多条
     writeConcern: <document>,
     collation: <document>,
     arrayFilters: [ <filterdocument1>, ... ],
     hint:  <document|string>  // 手动指定索引
   }
)


db.collection.updateOne(
   <filter>,
   <update>,
   {
     upsert: <boolean>,
     writeConcern: <document>,
     collation: <document>,
     arrayFilters: [ <filterdocument1>, ... ],
     hint:  <document|string>
   }
)


db.collection.updateMany(
   <filter>,
   <update>,
   {
     upsert: <boolean>,
     writeConcern: <document>,
     collation: <document>,
     arrayFilters: [ <filterdocument1>, ... ],
     hint:  <document|string>
   }
)
  删除文档
db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>,
     collation: <document>
   }
)
db.collection.deleteOne(
   <filter>,
   {
      writeConcern: <document>,
      collation: <document>
   }
)


db.collection.deleteMany(
   <filter>,
   {
      writeConcern: <document>,
      collation: <document>
   }
)
构造查询  
创建固定集合 products,整个集合空间大小 6142800B, 文档最大个数为 10000 个
db.createCollection('products', {capped:true, autoIndexId:true, size:6142800, max:10000 })


插入文档,直接插入文档,也会自动创建集合的
db.products.insert(
   [
     { item: "pen", qty: 20 },
     { item: "eraser", qty: 25 },
{ item: "pencil", qty: 50, type: "no.2", _id: 11 }
   ]
)


查询条件 : where qty > 10 and qty <= 50 and item = "eraser" and (qty >= 0 or item <> "pencil" ) limit 0, 5
db.products.find({
    qty: {$gt : 20, $lte : 50},
    item:"eraser",
    
    $or:[
        qty: {$gte : 0},
        item: {$ne:"pencil"}
    ]

}).limit(5).skip(0).pretty()


更新
db.col.update({item:'pen'}, {$set:{'qty':300}}, {multi:true})

 

php 示例

<?php

// 查询 ==================================================

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);

// 插入数据
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1, 'name' => '菜鸟教程', 'url' => 'http://www.runoob.com']);
$bulk->insert(['x' => 2, 'name' => 'Google', 'url' => 'http://www.google.com']);
$bulk->insert(['x' => 3, 'name' => 'taobao', 'url' => 'http://www.taobao.com']);
$manager->executeBulkWrite('test.sites', $bulk, $writeConcern);

$filter = ['x' => ['$gt' => 1]];
$options = [
    'projection' => ['_id' => 0], // 字段
    'sort' => ['x' => -1], // 排序
];

// 查询数据
$query = new MongoDB\Driver\Query($filter, $options);

$cursor = $manager->executeQuery('test.sites', $query);

foreach($cursor as $document) {
    print_r($document);
}


// 更新 ============================================


$bulk = new MongoDB\Driver\BulkWrite;
$bulk->update(
    ['x' => 2],
    ['$set' => ['name' => '菜鸟工具', 'url' => 'tool.runoob.com']],
    ['multi' => false, 'upsert' => false]
);

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
$result = $manager->executeBulkWrite('test.sites', $bulk, $writeConcern);



// 删除 ===========================================================================


$bulk = new MongoDB\Driver\BulkWrite;
$bulk->delete(['x' => 1], ['limit' => 1]);   // limit 为 1 时,删除第一条匹配数据
$bulk->delete(['x' => 2], ['limit' => 0]);   // limit 为 0 时,删除所有匹配数据

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
$result = $manager->executeBulkWrite('test.sites', $bulk, $writeConcern);

 

标签:示例,mongodb,db,collection,writeConcern,bulk,MongoDB,collation,php
From: https://www.cnblogs.com/zbseoag/p/17552323.html

相关文章

  • 设计模式-建造者模式在Java中使用示例
    场景建造者模式复杂对象的组装与创建没有人买车会只买一个轮胎或者方向盘,大家买的都是一辆包含轮胎、方向盘和发动机等多个部件的完整汽车。如何将这些部件组装成一辆完整的汽车并返回给用户,这是建造者模式需要解决的问题。建造者模式又称为生成器模式,它是一种较为复杂、使用......
  • PHP 获取13位毫秒级时间戳
    $dateTime不传值取当前时间/***@parammixed$dateTime任意有效时间格式**@returnint*@throws\Exception*/functiongetMillisecond($dateTime=null):int{$microTime=$dateTime===null?microtime(true):(new\DateTime($dateTime))->getTimes......
  • PHP 生成数据库的 markdown 字段说明文档,支持 mysql,postgresql
    安装composerrequirepeng49/db2markdown命令行使用phpvendor/bin/db2markdown输入数据库的地址(host),端口(port)用户名,密码,要导出的表,默认是*,生成所有表的文档,指定多个表明用逗号隔开,如:table1,table2$phpsrc/bin/db2markdownpleaseenterthedb(1mys......
  • rabbitmq php 代码示例
    交换机类型direct:直连交换机,根据路由键投递到与绑定键匹配的队列。fanout:扇形交换机,采用广播模式,投递到所有与之绑定的队列。topic :主题交换机,对路由键与绑定键进行模式匹配后再投递到相应的队列。headers:头交换机,不处理路由键,而是根据发送的消息内容中的heade......
  • C# 选择文件选择设置类型示例
     例子:OpenFileDialogdialog=newOpenFileDialog();dialog.Multiselect=false;//该值确定是否可以选择多个文件dialog.Title="请选择文件";dialog.Filter="图像文件(*.jpg;*.png;*.bmp)|*.jpg;*.png;*.bmp;*.jpg......
  • 13-MongoDB 集成:如何在响应式应用中访问 NoSQL 数据库
    上一讲开始,我们进入了响应式数据访问这一模块的学习,并且引出了Spring家族中专门用于实现数据访问的SpringData框架及其响应式版本。我们知道SpringData支持多种响应式Repository用来构建全栈响应式编程模型,而MongoDB就是其中具有代表性的一种数据存储库。今天,我就将结......
  • Dockerfile与docker-compose搭建php环境
     目录结构 php.conf文件内容server{ listen 80; server_name localhost; location/{ root /usr/share/nginx/html/web; index index.phpindex.htmlindex.htm; } error_page 500502503504 /50x.html; location=/50x.html{ root /usr/share/nginx/......
  • PHP微信接入时的token验证
    微信接入时的token验证//微信token认证$signature=$_GET["signature"];$timestamp=$_GET["timestamp"];$nonce=$_GET["nonce"];$echostr=$_GET["echostr"];//你的设置Token$token="lingqiangkejiToken";//1)将......
  • ubuntu20.04安装mongodb步骤
    注:虚拟机无法运行mongodb5.0以上的版本1、wget-qO-https://www.mongodb.org/static/pgp/server-4.4.asc|apt-keyadd-导入并设置公钥2、echo"deb[arch=amd64,arm64]https://repo.mongodb.org/apt/ubuntufocal/mongodb-org/4.4multiverse"|tee/ect/apt/sources.list.......
  • 四、EAS代码代码示例
    4.EAS代码代码示例4.1单据新增代码//如:新增一行付款单//构造一条付款单信息(构造值对象)PaymentBillInfopayInfo=newPaymentBillInfo();payInfo.setNumber("1001")://关联用户UserInfouserInfo=newUserInfo();userInfo.setId(BOSUuid.read("867d5df6-00f8-1000-e......