sourcetip

MongoDB에 포함된 문서에 대한 고유 ID를 만들려면 어떻게 해야 합니까?

fileupload 2023. 5. 23. 22:20
반응형

MongoDB에 포함된 문서에 대한 고유 ID를 만들려면 어떻게 해야 합니까?

따라서 컬렉션의 항목에서 특정 하위 문서를 고유하게 참조해야 합니다.예를 들어:

User = {
    'name': 'jim',
    'documents: [
        {'id': 0001, 'title': "My document"},
        {'id': 0002, 'title': "My second document!"},
    ]
}

따라서 애플리케이션 수준이 아닌 새 문서에 대한 ID를 자동으로 생성할 수 있어야 합니다(실제 개발 시나리오에는 경쟁 조건이 있기 때문에).

mongo의 자동 생성 ObjectId(수집 수준의 _id 필드에서 사용됨)를 사용할 수 있는 방법이 있습니까?

네, mongo의 ObjectId를 사용하는 것이 방법입니다.유일한 것은 애플리케이션 코드에서 직접 생성해야 한다는 것입니다.이들은 전 세계적으로 고유한 것으로, 서로 다른 작업자가 동일한 ObjectId를 두 개 생성하지 않기 때문에 그런 의미에서 인종 조건은 없습니다.

모든 공식 드라이버는 ObjectId를 생성하는 방법을 제공해야 합니다.Ruby에서의 사용법은 다음과 같습니다.

oid = BSON::ObjectId.new

모든 드라이버에는 ObjectId를 생성하는 기능이 있습니다.

껍질 속에서 당신은 그냥 합니다.new ObjectId():

> db.test.insert({x:new ObjectId()});
> db.test.find();
{ "_id" : ObjectId("4f88592a06c05e4de90d0bc1"), "x" : ObjectId("4f88592a06c05e4de90d0bc0") }

자바에서는new ObjectId()뿐만 아니라.특정 구문을 보려면 드라이버의 API 문서를 참조하십시오.

mongoengine을 사용하여 다음과 같이 포함된 문서에 ObjectId를 만듭니다.

from bson.objectid import ObjectId

class Address(EmbeddedDocument):
    _id = ObjectIdField( required=True, default=ObjectId )
    street = StringField()

Meteor의 서버에서 다음을 사용합니다.

new Meteor.Collection.ObjectID(hexString);

참조: http://docs.meteor.com/ #collection_object_id

이것이 파이썬(pymongo)에서 할 수 있는 방법입니다.

from pymongo import MongoClient
import bson

client = MongoClient('mongodb://localhost:27017/')
db = client.test_db

result=db.users.insert_one({'name': 'jim',
    'documents': [
        {'_id': bson.objectid.ObjectId(), 'title': "My document"},
        {'_id': bson.objectid.ObjectId(), 'title': "My second document!"},
    ]})

print list(db.users.find({}))

그리고 여기 클로저에서 콩고몽고를 사용한다고 가정하면 다음과 같은 방법이 있습니다.

(import org.bson.types.ObjectId)
(str (ObjectId.)) ; => "12345xxxxx"

언급URL : https://stackoverflow.com/questions/10144852/how-can-i-create-unique-ids-for-embedded-documents-in-mongodb

반응형