Ответы пользователя по тегу MongoDB
  • Как сделать поиск по $in и $nin для одного поля в aggregate mongodb?

    WinPooh32
    @WinPooh32
    Stack Overflow answer searching expert
    duplicate field name Key in struct literal

    Так в ошибке все написано. Вы неправильно создали структуру.

    bson.D это массив из bson.E, где у bson.E есть поля Key и Value, соответственно в Го такой код должен быть:
    matchFilter := bson.D{
    		bson.E{
    			Key: "$match",
    			Value: bson.D{
    				bson.E{
    					Key: "roommates",
    					Value: bson.D{
    						bson.E{Key: "$in", Value: []int{123}},
    						bson.E{Key: "$nin", Value: []int{3123}},
    					},
    				},
    			},
    		},
    	}


    bson.E можно опустить, поэтому в примерах непонятные {{ появляются.
    Ответ написан
    1 комментарий
  • Как корректно занести объект с полем ObjectID в MongoDB (Golang mongo-driver)?

    WinPooh32
    @WinPooh32
    Stack Overflow answer searching expert
    Все правильно, вы при отправке посылаете такой _id, потому что у вас в структуре это значение идет по умолчанию.

    Есть несколько вариантов решения вопроса:
    1) Использовать разные структуры для получения и отправки, где в структуре для вставки не будет поля _id, тогда монга сама задаст значение для id.
    2) Либо генерировать id на клиенте через primitive.NewObjectID()
    в вашем случае:
    testIndicator := db.Indicator{
        ID: primitive.NewObjectID(),
        ...
      }

    3) Использовать *primitive.ObjectID в качестве типа для ID, nil будет значением по умолчанию, тогда монга создаст объект сама.
    Ответ написан
    Комментировать
  • Как программно уйти от ошибки key too large to index в pymongo python?

    WinPooh32
    @WinPooh32
    Stack Overflow answer searching expert
    Костыльным решением вашей проблемы будет хеширование.
    1) Перед вставкой хешируете свои ключи c помощью некритографического алгоритма.
    2) При поиске по ключу делаете то же самое.

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

    Очевидно, что для ключа потребуется новое поле.
    А лучше выберете более адекватные атрибуты в качестве ключа.

    UPD: у монги есть индексы на хешах.
    Ответ написан
  • Зачем асинхронность?

    WinPooh32
    @WinPooh32
    Stack Overflow answer searching expert
    но для чего ее можно использовать еще?

    Например, заваривание чая человеком:
    Включаете чайник с водой. Пока вода греется, кладёте пакетик чая, сахар в кружку. Тут можно и посуду начать мыть. Когда чайник выключится, наливаете в кружку и размешиваете. Продолжаете мыть посуду.

    А если делать все синхронно, то придется ждать и ничего не делать, пока нагреется чайник, потом заваривать чай и мыть посуду. Очевидно, это не эффективно.

    Замените человека на поток, чайник с водой на сетевые запросы, кружку с чаем, посуду на обработку данных.
    Ответ написан
    Комментировать