Как я могу заставить его работать в манго, что-то вроде & ldquo; вставить в ON DUPLICATE KEY UPDATE & ldquo; [Дубликат]

Поскольку люди, похоже, обращаются к этому вопросу, когда речь заходит об ошибках компоновщика, я собираюсь добавить это здесь.

Одной из возможных причин ошибок компоновщика с GCC 5.2.0 является то, что новая библиотека libstdc ++ ABI теперь выбран по умолчанию.

Если вы получаете ошибки компоновщика о неопределенных ссылках на символы, которые включают типы в пространстве имен std :: __ cxx11 или теге [abi: cxx11], то это, вероятно, указывает на то, что вы пытаетесь связать файлы объектов, которые были скомпилированы с различными значениями для макроса _GLIBCXX_USE_CXX11_ABI. Это обычно происходит при подключении к сторонней библиотеке, которая была скомпилирована с более старой версией GCC. Если сторонняя библиотека не может быть перестроена с новым ABI, вам нужно будет перекомпилировать свой код со старым ABI.

. Если вы вдруг получите ошибки компоновщика при переключении на GCC после 5.1.0 это было бы замечательно.

24
задан PaolaJ. 24 January 2014 в 23:24
поделиться

3 ответа

В Mongoose вы использовали Person.update для документации . Чтобы создать документ, если он еще не существует, вам необходимо передать { upsert : true } в хэш-настройках параметров по умолчанию false.

i.e.

Person.update( { name : 'Ted' }, { name : 'Ted', age : 50 }, { upsert : true }, callback );
37
ответ дан Brett DeWoody 29 August 2018 в 01:52
поделиться

collection.update с upsert:true. См. Также здесь .

19
ответ дан heinob 29 August 2018 в 01:52
поделиться

[db.collection.replaceOne(filter, replacement, options)] с upsert:true

Например. из здесь :

try {    db.restaurant.replaceOne(
            { "name" : "Pizza Rat's Pizzaria" },
            { "_id": 4, "name" : "Pizza Rat's Pizzaria", "Borough" : "Manhattan", "violations" : 8 },
            { upsert: true }    
         ); 
    }
catch (e){ print(e); }
6
ответ дан Unheilig 29 August 2018 в 01:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: