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
'sourcetip' 카테고리의 다른 글
wget을 사용하여 전체 디렉터리와 하위 디렉터리를 다운로드하는 방법은 무엇입니까? (0) | 2023.05.23 |
---|---|
스위프트에서 항상 내부 폐쇄를 사용해야 합니까? (0) | 2023.05.23 |
Eclipse Git 플러그인에서 기본 작성자 및 커밋을 변경하려면 어떻게 해야 합니까? (0) | 2023.05.23 |
문자열 배열을 문자열로 변환 (0) | 2023.05.23 |
오브젝티브-C의 "@synchronized"에 해당하는 스위프트는 무엇입니까? (0) | 2023.05.23 |