MongoVue и Guid - PullRequest
       25

MongoVue и Guid

3 голосов
/ 17 июня 2011

Я хотел бы вставить Guid с помощью инструмента mongoVue, как я могу это сделать?

Чтобы объяснить контекст, я использовал для копирования json моей коллекции (благодаря вкладке Text View) и вставил его в мой текстовый файл вместо использования mongodump. Но когда я создаю новую коллекцию и вставляю ее в json из предыдущей копии, мой двоичный тип guid теперь отображается как «идентификатор объекта», то проблема заключается в следующем: я не могу сопоставить в своем коде C # идентификатор объекта с мое поле Guid. Вот почему я хотел бы знать, возможно ли вставить guid в MongoVue.

Спасибо, ребята. John

Ответы [ 3 ]

2 голосов
/ 19 июня 2011

Вы можете использовать следующие обозначения для ввода GUID в MongoVUE:

{
guid_field: new Guid("3bed978a-dc87-4fa4-8a1a-f0679387fa7e")
}

Чтобы вставить новый Guid (Guid.NewGuid ()), вы можете ввести:

{
guid_field: new Guid()
}

Все направляющие конвертируются в двоичные значения типа 3.

0 голосов
/ 17 июня 2011

Когда я вставляю экземпляр следующего класса:

public class C {
    public Guid Id;
    public int X;
}

В MongoVUE Text View это выглядит так:

/* 0 */
{
  "_id": {
    "$binary": "q4TTjt8k4UyaJI6FwuZ1EQ==",
    "$type": "03"
  },
  "X": 1
}

Где GUID был представлен как двоичное значение BSON подтипа 3, которое НЕ является ObjectId.

Чтобы вставить GUID в MongoVUE, вам нужно создать двоичное значение BSON подтипа 3. Сложной частью является определение значения Base64 для использования.

Кроме того, существует проблема с хранением UUID в целом в MongoDB. Три драйвера (C #, Java и Python), которые в настоящее время поддерживают UUID, в прошлом использовали разные порядки байтов для двоичного представления UUID, что действительно усложняет жизнь.

В будущих версиях драйверов будет использоваться новый двоичный подтип 4 для идентификаторов UUID, и все они будут стандартизированы в официальном порядке байтов сети UUID (16 байтов сохраняются в том же порядке, в котором они отображаются в строковом представлении UUID) .

Текущая версия драйвера C # (версия 1.1 была только что выпущена) имеет некоторую экспериментальную поддержку для работы с различными представлениями GUID (см. Перечисление GuidRepresentation и где оно используется).

0 голосов
/ 17 июня 2011

Не уверен, что он может ответить на ваш вопрос, но этот пост может помочь: http://www.mongovue.com/2010/09/13/using-objectids/

...