Предположим, у вас есть большой проект, написанный на c ++, который содержит тысячу файлов .cpp и тысячу файлов .h. И давайте предположим, что проект также зависит от десяти статических библиотек. Скажем, мы работаем над Windows, и мы строим наш проект в Visual Studio 20xx. Когда вы нажимаете Ctrl + F7 Visual Studio, чтобы начать компиляцию всего решения (предположим, что у нас есть только один проект в решении)
В чем смысл компиляции?
Второй этап компиляции выполняется Linker.Linker должен объединить весь объектный файл и построить окончательно вывод (который может быть исполняемым или библиотекой)
Шаги при связывании проекта
error LNK2001: unresolved external symbol "void __cdecl foo(void)" (?foo@@YAXXZ)
Наблюдение
Как решить эту ошибку
Ошибка времени компилятора:
Ошибка времени компоновщика
#pragma once
, чтобы компилятор не включал один заголовок если он уже был включен в текущий .cpp, который скомпилирован MongoDB не поддерживает сортировку на стороне сервера с помощью команды distinct
. Что происходит в консоли, так это то, что вызов distinct('myKey')
возвращает массив, а затем вы вызываете метод JavaScript sort
в этом массиве, который возвращает отсортированную версию массива. Параметры, которые вы передаете в sort
, игнорируются.
Чтобы выполнить эквивалент в Java, вы должны сделать:
List myKeys = myCollection.distinct("myKey");
java.util.Collections.sort(myKeys);
Чтобы получить уникальные ключи, используя сортировку на стороне сервера, может использовать aggregate
. Вот как вы это сделали бы в оболочке:
db.mycollection.aggregate([
{ $group: {_id: '$myKey' }},
{ $sort: {_id: 1}}
])
Однако, когда я протестировал это, простой подход к сортировке на стороне клиента выполнялся намного лучше.
Фактически вы можете использовать чистый javascript
db.mycollection.distinct('mykey').sort()
или передать функцию сравнения для более детальной сортировки:
db.users.distinct('mykey').sort(function(a, b){return a >b})
Проверено на robomongo