2015-11-15 5 views
0

Я использую addToSet команду (добавить UpdatedData):db.collection.find возвращает несколько записей после addToSet

MyTable.update({ "UrlLink": "http://www.someurl.com"}, { 
     $addToSet: { 
      UpdatedData: { 
       TheDate: ThisDate, 
       NewInfo: ThisInfo 
      } 
     } 
    }, 
     function (err, result) { 
       next(err,result) 
     } 
); 

Но тогда, когда я делаю запрос (после UpdatedData добавляется в мой документ), я вижу, что он возвращает два документа. Вместо того, чтобы только один обновленный document:

db.MyTable.find({"UrlLink": "http://www.someurl.com"}) 

{ "_id" : ObjectId("56485922143a886f66c2f8bb"), "UrlLink" : "http://www.someurl.com", "Stuff" : "One", "UpdatedData" : [ { "TheDate" : "11/15/2015", "NewInfo" : "Info1", "_id" : ObjectId("5648599a71efc79c660f76d3") } ] } 
{ "_id" : ObjectId("5648599f71efc79c660f76d4"), "UrlLink" : "http://www.someurl.com", "Stuff": "One", "UpdatedData" : [ ] } 

Таким образом, кажется, что addToSet создает новый документ с новым _id, вместо того, чтобы обновить старую запись (ObjectId("5648599f71efc79c660f76d4")). Но я вижу только обновленный документ в robomongo (ObjectId("56485922143a886f66c2f8bb")). Любые идеи, почему это происходит и как я могу предотвратить это поведение?

ответ

1

update не может создать новый документ, он может только update существующий. Похоже, вы создали два документа с одинаковым URL-адресом. Затем, когда вы его обновляете, он просто обновляет первый.

Чтобы предотвратить создание документа с уже существующим URL-адресом, вы можете создать индекс и установить это уникальный

db.collection.createIndex({ UrlLink: 1 }, { unique: true })

Это позволит предотвратить создание новых документов с тем же URL, и он будет также делать запросы на UrlLink как можно быстрее.

+0

Хорошо, но я вижу только обновленное в robomongo, странно, что запрос возвращает два документа? – user1665355

+0

@ user1665355 Какой драйвер mongodb вы используете? какая версия mongodb? – webdeb

+0

3.0 версия. Я попробую ваше решение – user1665355

Смежные вопросы