16

私は MongoDB データベースの新規ユーザーです。MongoDb では、コレクションに何を挿入しても、デフォルトで _id フィールドという 1 つのフィールドが追加されます。

例えば:

db.users.insert({"User_id":"1","User_Name":"xxx","Address":"yyyy"})
db.users.find()

それが示している

{ "_id" : ObjectId("528475fc326b403f580d2eba"), "User_id" : "1", "User_Name" : "xxx",Address" : "yyyy" }

_id フィールドは必要ありません。その _id フィールドを User_id に置き換えて、自動インクリメント値に置き換えたいと考えています。出来ますか。私を助けてください。前もって感謝します。

4

2 に答える 2

22

_idフィールドはmongodbでは本当に特別です。これはあなたの主キーであり、それなしでは文書を持つことはできません。それなしでドキュメントを挿入しようとしている場合でも、mongo はそれを作成します (あなたの例のように)。_idさらに、コレクションのフィールドを変更することさえできません。

ただし、独自の _id を使用してドキュメントを作成できます。あなたが望むなら、あなたはすることができますdb.users.insert({"_id":"1","User_Name":"xxx","Address":"yyyy"}) \\why exactly 1 is a string?

_idその意味を覚えておいてくださいuser_idまた、これ_idは一意でなければならないことを覚えておいてください

mongodb は sql とは異なることに注意してください。自動インクリメント キーはありません (これは、作成者がそれを行う方法を知らなかったということではなく、それなしでほとんどそのままにしておくことができるということです) が、同じ動作に似たものを作成することができます。

于 2013-11-14T07:43:45.347 に答える
2

私が理解できるのは、あなたの問題は、mongoDB internal _id をカスタム属性として使用したいということです。たとえば、db にユーザー ID が含まれており、"_id、name、address ..." などの属性があり、アプリケーションでこの _id の値を外部参照用の userId として使用するとします。@SalvadorDaliが言ったように、mongoDBでは_idフィールドが非常に重要であり、それなしではドキュメントを作成できません。できることは、db にデフォルトの _id で値を格納させることだけですが、json ファイルにこれら 2 つの変更を適用することで、独自の User_id を使用して外部にアクセスできます。

"properties": {
    "userId":{
      "type": "string",
      "id":"true",
      "index":"true",
      "description": "unique id of identity"
    }
}

一意の値を保存すると、デフォルトの _id を使用してデータベースに保存され、外部ではその値を userId フィールドに含めることができます。質問が間違っていたら訂正してください。

于 2016-05-16T04:03:04.543 に答える