У меня есть простая коллекция "пользователей", внутри которой у меня сейчас только 2 документа.
{
"_id": ObjectId("4ef8e1e41d41c87069000074"),
"email_id": {
"0": 109,
"1": 101,
"2": 64,
"3": 97,
{
"_id": ObjectId("4ef6d2641d41c83bdd000001"),
"email_id": {
"0": 109,
"1": 97,
"2": 105,
"3": 108,
Теперь, если я пытаюсь создать новый индекс с {unique: true} в поле email_id, mongodb жалуется на меня: «Индекс ошибки дублированного ключа E11000: db.users. $ Email_id dup key: {: 46}». Я получаю ту же ошибку даже после указания {dropDups: true}, однако я не думаю, что это так, поскольку оба документа имеют разные идентификаторы электронной почты.
Я не уверен, что здесь происходит, любые указатели будут с благодарностью.
Редактировать: Полный просмотр документов:
{
"_id": ObjectId("4ef8e1e41d41c87069000074"),
"email_id": {
"0": 109,
"1": 101,
"2": 64,
"3": 97,
"4": 98,
"5": 104,
"6": 105,
"7": 110,
"8": 97,
"9": 118,
"10": 115,
"11": 105,
"12": 110,
"13": 103,
"14": 104,
"15": 46,
"16": 99,
"17": 111,
"18": 109
}
}
и
{
"_id": ObjectId("4ef6d2641d41c83bdd000001"),
"email_id": {
"0": 109,
"1": 97,
"2": 105,
"3": 108,
"4": 115,
"5": 102,
"6": 111,
"7": 114,
"8": 97,
"9": 98,
"10": 104,
"11": 105,
"12": 110,
"13": 97,
"14": 118,
"15": 64,
"16": 103,
"17": 109,
"18": 97,
"19": 105,
"20": 108,
"21": 46,
"22": 99,
"23": 111,
"24": 109
}
}
Есть еще несколько полей, таких как «display_name», «istered_since »и т. Д., Которые я пропустил на приведенном выше дисплее (я не думаю, что они играют какую-либо роль в появлении ошибки, если они все еще нужны, я могу вероятно, вставьте сюда все документы)
Я использую erlang mongodb driver для связи с моим экземпляром mongo. Все поля, которые можно увидеть, сохраняются в виде двоичных байтов, поэтому вы видите такой странный email_id в документе.
Примечание. Бинарный формат бинарного кода не навязывается моей логикой кода, я очень сильно передаю строку email_id внутри моих документов bson, но в итоге я всегда вижу свои данные в виде двоичных байтов. (Возможно, потому, что как написан драйвер erlang mongodb, я на самом деле не исследовал это, так как мои запросы find (), find_one () и другие запросы работают, как и ожидалось, даже с полями, сохраненными в виде двоичных байтов)
Редактировать:> db.users.findOne ()
{
"_id" : ObjectId("4ef6d2641d41c83bdd000001"),
"email_id" : [
109,
97,
105,
108,
115,
102,
111,
114,
97,
98,
104,
105,
110,
97,
118,
64,
103,
109,
97,
105,
108,
46,
99,
111,
109
],
"display_name" : [
65,
98,
104,
105,
110,
97,
118,
43,
83,
105,
110,
103,
104
],
"provider" : [
106,
97,
120,
108,
46,
105,
109
],
"provider_id" : [ ]
}