【问题标题】:Laravel - Mongodb [ jenssegers/laravel-mongodb ] - Schema BuilderLaravel - Mongodb [ jenssegers/laravel-mongodb ] - 模式生成器
【发布时间】:2017-06-15 07:08:18
【问题描述】:

我有一个带有 mongodb 的网络应用,使用 jenssegers 包。

由于我使用的是 mongodb,我需要创建任何迁移表吗? Jenssegers 数据库驱动也有(有限的)schema builder support

Schema::create('users', function($collection)
{
    $collection->index('name');

    $collection->unique('email');
});

我找到了两个不同的“答案”。这家伙正在使用the schema builder

Mulkave 的回答是:

Q:“当我运行命令“php artisan migrate”时,在将迁移表创建到 mongodb 数据库时出现以下错误:”

A:“您可能误解了 MongoDB 作为文档数据库的目的,您不需要在基于文档的数据库中进行迁移,这就是它们的优点. 它们具有动态模式,因此您所要做的就是保存模型,而不管它们具有什么属性,这意味着您必须收紧应用程序的业务逻辑,以确保模型按预期保存。”


那么,我需要迁移表吗? 谢谢!

【问题讨论】:

  • mongo db 是一个文档数据库,它没有任何特定的模式。例如,在您的用户集合中,一个文档(mysql 中的行等效)可以具有用户名字段,而另一个文档可以完全排除用户名。 mongo没关系。所以在我看来,迁移是多余的。

标签: php mongodb laravel laravel-5


【解决方案1】:

我知道这有点晚了,但我想我会在这里输入一些代码。我喜欢索引模型有两个原因:

  1. 我可以像使用界面一样使用它,也就是说,我不得不输入这些信息,因为它是模型所需的一部分。这确保我有一个干净的数据集。这只是偏好,不是要求。
  2. 索引搜索比没有索引时更快。 我没有对此进行足够的研究来确定 jensegers 库是否属于这种情况。但对我来说很有意义的是,如果您使用模式来设置集合并将其设置为索引这些字段,那么在此集合中搜索记录时会更快。你也可以从 Mongo 端手动设置,但我喜欢你可以使用这个 Eloquent 扩展来做到这一点。

所以对于阅读本文的人,如果我用这个未经验证的论点说服了你,并且你想设置一个模式,我发现设置集合很容易但不容易掉。如果您想进行完全迁移(请注意,这样做会丢失所有数据),那么您可以使用以下代码:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateYourCollectionTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::connection('mongodb')->create('collection_name', function ($collection) {
            $collection->index('field_1');
            $collection->index('field_2');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        DB::connection('mongodb')->drop(['collection_name']);
    }
}

【讨论】:

  • 是否还会为字段添加索引
  • 在字符串上添加索引时,它在索引中显示为整数
猜你喜欢
  • 2018-12-25
  • 2019-08-27
  • 2017-05-21
  • 2015-02-13
  • 2014-08-04
  • 2018-08-28
  • 2017-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多