Как я могу получить идентификатор документа, который я добавил в коллекцию 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. Например, помимо того, что он просто уникален, он также может быть естественным ключом, более узким, удобочитаемым, упорядоченным и т. Д.

Другие вопросы по тегам