2016-06-22 2 views
0

Я имею Монго документы с дубликатом ключа,Как запросить документ MongoDB с двойным ключом?

{ 
    "_id" : ObjectId("576a3b4a2bf2bc22bccb80ec"), 
    "Name" : "User1", 
    "Name" : "User2" 
} 

{ 
    "_id" : ObjectId("576a3b4a2bf2bc22bccb80ab"), 
    "Name" : "User2", 
    "Name" : "User1" 
} 

Когда я пытаюсь запросить имя как «user1». Я всегда получаю только один документ. Но результат должен быть двух документов. Есть ли способ получить правильный результат?

Заранее спасибо

Примечание: Я знаю, что мой дизайн не так, я просто пытаюсь сделать его успех.

+0

Есть два 'name' полей в одной записи? Как это возможно? Mongodb не позволит вставлять повторяющиеся поля. – Shrabanee

+0

Нет Это позволит, попробуйте вставить тот же документ. –

+0

Я попытался вставить два поля с тем же именем и разными значениями, из оболочки mongo. он добавил только одно поле. Какой документ, который вы указали в вопросе, вы его получили, найдя в оболочке манго? – Shrabanee

ответ

0

Для коллекции ObjectId в MongoDB уникальны, поскольку он выступает в качестве первичного ключа для этой коллекции. Согласно MongoDB Manual У вас никогда не может быть двух документов в одной коллекции с такими же ObjectId.

Но для разных коллекций есть возможность иметь то же самое ObjectID. И в этом случае при запросе вы, очевидно, должны указать имя коллекции.

Надеется, что это помогает

+0

На самом деле мне нужен один документ с тем же ключом, что и не два документа с тем же ObjectId. –

2

Вы не можете иметь два поля с одинаковым именем в коллекции в MongoDB. Когда вы пытаетесь вставить документ с двумя полями с одним и тем же ключом, MongoDB будет обновляться с последним значением, а не создавать отдельные поля.

Пример:

db.test.insert({'Name':'user1','Name':'user2'}) 

db.test.insert({'Name':'user2','Name':'user1'}) 

будет приводить к вставке 2 документа, как показано ниже

{ "_id" : ObjectId("576a8b4731157693143d0571"), "Name" : "user2" } 
{ "_id" : ObjectId("576a8b5531157693143d0572"), "Name" : "user1" }