私はmongodbの初心者です。
_idフィールドを自動的に生成せずにドキュメントを挿入する必要があります。
フィールドTenant_idを一意に設定するか、「_ id」フィールドをTenant_idに変更する必要があります。
どうやるか?
このようなもの
Tenant
{Tenant_id: 123, Tenant_info: ...}
デフォルトでは、すべての通常のコレクションは、_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フィールドは通常のコレクションと上限付きコレクションの両方に共通です。
_id
フィールドは、上限付きコレクションを使用していない限り、mongoドキュメントのデフォルトキーです。
これは、ドキュメント構造から除外できない不変のフィールドです。
代わりにtennant_id
を_id
として使用することをお勧めします。
Mongodbは、ドキュメントを挿入するときに「_id」フィールドに値を指定しない場合にのみ、「_ id」フィールドを自動的に生成します。したがって、ドキュメントを挿入するときに、手動で_idを設定できます。
db.tenants.insert( {"_id" : 123, "Tenant_info" : ... } )
すべてのMongoDBドキュメントには一意のフィールド「_id」が必要です。指定しない場合は、自動的に生成されます。
このフィールドの名前を変更することはできません。
2つの選択肢は次のとおりです。
1)生成された_idフィールドを無視し、独自のtenant_idフィールドを使用します(そのフィールドに一意のインデックスを追加する必要があります)。または2)_idフィールドにtenant_id値を格納します(すでに一意のインデックスがあるという事実を利用します)その上)。
Mongodbコレクションの_idフィールドを削除する方法はありません。 @stepheneが言ったように、私は同じことを試みましたが、iamはこのようなエラーを取得します
> 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