devmachine / mongoimport
此软件包已被废弃且不再维护。未建议替代软件包。
将 MongoDB 导出导入到 Doctrine。
1.0.4
2015-12-23 08:20 UTC
Requires
- php: >=5.4.0
- beberlei/assert: ^2.4
- doctrine/mongodb: ^1.2
Requires (Dev)
This package is not auto-updated.
Last update: 2023-02-24 00:14:50 UTC
README
PHP 实现的 mongoimport。
关于
为什么需要自定义 mongoimport 而不是使用 mongo 提供的默认工具?在特定的设置(例如 Docker)中,mongo 客户端不可用。启用 PHP 中的 mongo 扩展后,可以使用这个小巧的库导入由 mongoexport 创建的 JSON。
提供与 Symfony 的集成(请参阅以下内容),因此可以作为 fixtures 加载器使用。
安装
将以下内容添加到您的 composer.json 中
{ "require": { "devmachine/mongoimport": "~1.0" } }
使用方法
将 movies.json 导入到 hollywood 数据库。集合名称自动通过文件的基本名称(不带扩展名)确定。
$ ./bin/mongoimport movies.json --db hollywood
默认情况下,工具连接到在 localhost:27017
上运行的 mongod。在 docker 环境中,默认主机是 MONGO_PORT_27017_TCP_ADDR
,默认端口是 MONGO_PORT_27017_TCP_PORT
。
覆盖默认主机、端口和集合名称
$ ./bin/mongoimport movies.json -c shows --db hollywood --host <host> -p <port>
要在导入之前删除现有集合,请使用 --drop
标志。
更多信息
$ ./bin/mongoimport -h
Symfony 集成
在内核中注册捆绑包
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Doctrine\Bundle\MongoDBBundle\DoctrineMongoDBBundle(), new Devmachine\MongoImport\Bundle\DevmachineMongoImportBundle(), ); }
当 DoctrineMongoDBBundle 启用时,它会为每个 ODM 管理器注册导入器,例如。
devmachine_mongoimport.default
(对于 default 管理器)devmachine_mongoimport.secondary
(对于 secondary 管理器)devmachine_mongoimport
是 default 导入器的别名。
示例
// Import movies.json into "movies" collection in default database. $total = $this ->get('devmachine_mongoimport') ->importCollection('movies.json') ; // Drop existing collection prior to import. $total = $this ->get('devmachine_mongoimport') ->import('movies.json', ['drop' => true]) ; // With specified collection name. $total = $this ->get('devmachine_mongoimport') ->import('movies.json', 'films', ['drop' => true]) ; // With specified collection and db. $total = $this ->get('devmachine_mongoimport') ->import('movies.json', 'films', 'hollywood', ['drop' => true]) ;
贡献
以下是一些 docker 命令。
初始化
$ docker-composer up -d # puts mongo container in bg
加载 fixtures
$ docker-compose run --entrypoint php composer fixtures/load.php
导出数据
从容器
$ mongoexport --db company --collection employees --jsonArray --pretty --out employees.json $ mongoexport --db company --collection offices --jsonArray --pretty --out offices.json
从主机
$ docker cp mongoimport_mongo_1:/employees.json ./tests/fixtures/ $ docker cp mongoimport_mongo_1:/offices.json ./tests/fixtures/
运行测试
$ docker-compose run --entrypoint php composer bin/phpunit
运行工具
$ docker-compose run --entrypoint php composer bin/mongoimport -V