17

私はmongodbの初心者です。

  1. _id フィールドを自動的に生成せずにドキュメントを挿入する必要があります。

  2. Tenant_id フィールドを一意に設定するか、「_id」フィールドを Tenant_id に変更する必要があります。

どうやってするの?

このようなもの

     Tenant
        {Tenant_id: 123, Tenant_info: ...}
4

5 に答える 5

27

デフォルトでは、すべての通常のコレクションは、_id フィールドがない場合、自動的に挿入します。

ただし、autoIndexId パラメータを明示的に false に設定することで、コレクションの作成時にこの動作を変更できます。

> db.createCollection("noautoid", { autoIndexId: false })
{ "ok" : 1 }

次に、_id フィールドなしでドキュメントを挿入できます。ただし、javascript ドライバー (および mongo コンソール) などの一部のドライバーは、_id フィールドを独自に追加します。mongo コンソールでは、次のことができます。

> db.noautoid._mongo.insert(db.noautoid._fullName, {name: "Jack"})
> db.noautoid.find()
{ "name" : "Jack" }

autoIndexId フィールドの詳細については、MongoDB ドキュメントを参照してください。このページはキャップ コレクションに関するものですが、autoIndexId フィールドは通常のコレクションとキャップ コレクションの両方に共通です。

于 2012-09-12T09:17:16.343 に答える
4

上限の_idあるコレクションを使用していない限り、フィールドは mongo ドキュメントのデフォルト キーです。

これは、ドキュメント構造から除外できない変更可能なフィールドです。

tennant_id代わりにasを使用することをお勧めし_idます。

于 2012-09-11T21:59:04.800 に答える
3

ドキュメントを挿入するときに「_id」フィールドの値を指定しない場合にのみ、Mongodb は「_id」フィールドを自動的に生成します。したがって、ドキュメントを挿入するときに _id を手動で設定できます。

db.tenants.insert( {"_id" : 123, "Tenant_info" : ... } )
于 2012-09-11T21:59:48.797 に答える
2

すべての MongoDB ドキュメントには一意のフィールド "_id" が必要であり、指定しない場合は自動的に生成されます。

このフィールドの名前を変更することはできません。

次の 2 つの選択肢があります。

1) 生成された _id フィールドを無視して独自の tenant_id フィールドを使用する (そのフィールドに一意のインデックスを追加する必要があります) または 2) _id フィールドに tenant_id 値を格納します (そして、既に一意のインデックスがあるという事実を利用します)その上で)。

于 2012-09-11T21:59:29.437 に答える
1

mongodb コレクションの _id フィールドを削除する方法はありません。@stepheneが言ったように、私は同じことを試みましたが、このようなエラーが発生しています

> db.noautoid._mongo.insert(db.noautoid._fullName, {name: "Jack"});
 2015-06-18T11:22:29.149+0530 E QUERY    Error: insert needs 3 args
 at (shell):1:20
于 2015-06-18T06:47:41.153 に答える