devmachine/mongoimport

此软件包已被废弃且不再维护。未建议替代软件包。

将 MongoDB 导出导入到 Doctrine。

1.0.4 2015-12-23 08:20 UTC

This package is not auto-updated.

Last update: 2023-02-24 00:14:50 UTC


README

Build Status Coverage Status

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_mongoimportdefault 导入器的别名。

示例

// 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