Как я могу получить идентификатор документа, который я добавил в коллекцию Cosmosdb?
У меня есть одна коллекция, в которую я вставляю документы разных типов. Я использую параметр типа, чтобы различать разные типы данных в коллекции. Когда я вставляю документ, я создал поле Id для каждого документа, но Cosmosdb имеет встроенное поле id.
Как я могу вставить новый документ и получить идентификатор созданного документа в одном запросе?
3 ответа
Я думаю, вам просто нужно .getResource()
способ получить документ создания объекта.
Пожалуйста, обратитесь к Java-коду:
DocumentClient documentClient = new DocumentClient(END_POINT,
MASTER_KEY, ConnectionPolicy.GetDefault(),
ConsistencyLevel.Session);
Document document = new Document();
document.set("name","aaa");
document = documentClient.createDocument("dbs/db/colls/coll",document,null,false).getResource();
System.out.println(document.toString());
//then do your business logic with the document.....
Код C#:
Parent p = new Parent
{
FamilyName = "Andersen.1",
FirstName = "Andersen",
};
Document doc = client.CreateDocumentAsync("dbs/db/colls/coll",p,null).Result.Resource;
Console.WriteLine(doc);
Надеюсь, это поможет вам.
CreateDocumentAsync
Метод возвращает созданный документ, чтобы вы могли получить идентификатор документа.
Document created = await client.CreateDocumentAsync(collectionLink, order);
Конечно, вы всегда можете получить id
из метода создания ответа в вашем любимом API, как уже показано в других ответах. У вас могут быть причины, по которым вы хотите делегировать назначение ключей в DocumentDB, но, честно говоря, я не вижу хороших.
Если вставленный документ не будет иметь id
set DocumentDB сгенерирует GUID для вас. Не будет существенной разницы по сравнению с простым созданием нового GUID самостоятельно и назначением его в поле id перед сохранением. Самостоятельное назначение идентификатора позволит вам немного упростить ваш код, а также позволит вам использовать идентификатор не только после сохранения, но и ДО. Что может упростить множество сценариев, которые вы можете иметь или столкнетесь в будущем.
Также обратите внимание, что вам не нужно использовать GUID как id
и может использовать любое уникальное значение, которое у вас уже есть. Так как вы упомянули, у вас есть и Id
поле (которое по имени, я предполагаю, является первичным ключом), тогда вы должны рассмотреть возможность его повторного использования вместо введения другого набора ключей.
Самостоятельно назначенный не-Guid ключ, как правило, является лучшим выбором, так как он может быть разработан, чтобы соответствовать вашим данным и потребностям приложения лучше, чем GUID. Например, помимо того, что он просто уникален, он также может быть естественным ключом, более узким, удобочитаемым, упорядоченным и т. Д.