Вопросы с тегами [mongodb]

1

голосов
1

ответ
3.4k

Просмотры

Проверьте, если значение существует в коллекции Монго

Я работаю в узле JS, и я использую Монго (Im абсолютный новичок). Теперь мне нужно, чтобы иметь коллекцию, которая в принципе должна выглядеть следующим образом ключи массива вар = [ «ключом1», «key2», «ключ3»] // с этим я легко могу проверить, если некоторое значение у меня есть в этом массиве с функцией IndexOf , Теперь мне нужно сделать коллекцию в Монго, что нужно только для хранения ключей, которые пользователь делает и если ключ уже существует в коллекции это нужно делать ничего. // Мои ключи выглядит примерно так, это может быть одна строка или это может быть массивом строковые ключи = «home4.car3» или Кис = [ «home4.car3», «home2.car4»] // Я нахожусь делать вставки, как этот db.collection (функция 'ключи', (эээ, коллекция) {collection.insert (ключи, {безопасно: истинно}, функция (эээ, результат) {если (ERR) {res.send ({» Ошибка «:» Ошибка "}); } Еще {console.log ( "успех"); }}); }); Теперь вот то, что произошло, когда я первый вставить массив из двух ключей в БД, а затем после этого одну строки: https://gist.github.com/anonymous/fc7730e398519cffde3f Кто-нибудь может сказать мне, как вставить для этого и как отфильтровать те ключи, чтобы проверить, если они в коллекцию?
user3237500
1

голосов
2

ответ
42

Просмотры

Group by time interval between window of time

Я имею следующую структуру документа: { "_id": "5c59c35d8610f702d00e6f70", "Ipaddress": "50.116.14.48", "STARTTIME": "2018-02-06T12: 01: 59.000Z", "Конечное время": "2018- 02-06T12: 31: 00.000Z»,} Я хотел бы быть в состоянии группы вхождений в течение 15 мин окна времени в. Например; Учитывая структуру документа выше, я бы предположить, этот документ будет считаться вхождением для обоих 0-15mins, 15-30mins и 30-45mins. Результат будет выглядеть следующим образом: [{ "вхождения": 1, "startWindow": "2018-02-06T12: 00: 00.000Z", "endWindow": "2018-02-06T12: 15: 00.000Z"} , { "вхождения": 1, "startWindow": "2018-02-06T12: 15: 01.000Z", "EndWindow": "2018-02-06T12: 30: 00.000Z"}, { "вхождения": 1, "startWindow": "2018-02-06T12: 30: 01.000Z", "endWindow": "2018-02 -06T12: 45: 00.000Z»}] Я видел много примеров, что группа только одной даты на интервале, но как о такой ситуации, когда документ имеет окно времени? Как построить эту агрегацию?
Sixthpoint
1

голосов
0

ответ
17

Просмотры

как синхронизировать данные с MongoDB упругим поиска с питоном

Я currentlt используя разъем Monstache для синхронизации MongoDB упругого поиска. есть ли другой рекомендуемый разъем для синхронизации. Архитектура: Angular7 Упругие Поиск Монго DB Phython PyCharm. есть ли другие soultion кроме этого. https://rwynn.github.io/monstache-site/.
Mohamed Sahir
1

голосов
0

ответ
88

Просмотры

How do I get rid of BSON objects after a mapReduce?

I'm a complete beginner to map-reduce and relatively new with MongoDB. I am trying to perform a map-reduce on a collection (by the name Customers). My map function: var map = function() { emit(this.nationality, {edad: this.age, telefono: this.phone_number}); }; My reduce function: var reduce = function(key, values) { return Array.sum(values); }; I call mapReduce() as follows: db.Customers.mapReduce( map , reduce , { out : { inline : 1}} ); Finally my result field is: "results" : [ { "_id" : "Brazil", "value" : { "edad" : 34, "telefono" : null } }, { "_id" : "Colombia", "value" : "[object BSON][object BSON]" }, { "_id" : "Germany", "value" : { "edad" : 18, "telefono" : 2986 } }, ... As you can see it contains BSON objects, the problem being that I can't find a way to visualize the content of these BSONs, not even in Robomongo. I have looked for other answers in Stackoverflow addressing this, so far I have found this: "Your reduce function must return the same format that your map function emits". But being honest, I haven´t managed to figure out how do I apply it to solve my problem. I mean, what is the format of my emit? And in which format is the output of my reduce function? If anyone could provide me the exact code lines, my gratitude in advance.
1

голосов
1

ответ
92

Просмотры

Java Spark: com.mongodb.spark.config.writeconfig вопрос

Я пытаюсь соединиться с MongoDB через искровой разъем Java и я получаю сообщение об ошибке «com.mongodb.spark.config.writeconfig», когда я представить банку и запустить банку в свече оболочки. Здесь скриншот ошибки: Не могли бы вы помочь мне решить эту проблему. Я попытался это, как хорошо, но никакого успеха. . $ / Бен / sparkR --conf "spark.mongodb.input.uri = MongoDB: //127.0.0.1/test.myCollection readPreference = primaryPreferred" ./bin/sparkR --conf «spark.mongodb.output.uri = MongoDB: //127.0.0.1/db.test»./bin/spark-shell --packages org.mongodb.spark: монго-искровой connector_2.11: 2.2.0 $ искровых представить --master местного - класс com.test.spark.SparkClient /home/otalogin/SparkClient.jar $ искровым представить --master местного --class com.test.spark.SparkClient /home/otalogin/SparkClient.jar --jar Монго-искровым connector_2 +0,11: 2.2.0, но получить ту же ошибку.
Tom Swayer
1

голосов
0

ответ
41

Просмотры

Как сделать Спарк работник чтения данных из локальной MongoDB с MongoDB-искровым разъем?

У меня два «MongoDB» на двух компьютерах. И есть также «Спарк работник» на каждом компьютере. Но когда я запускаю «искру», он не читает данные из локального «MongoDB». Вместо этого он читает от одного из них. Таким образом, получили только частичные данные. Существует страница. https://docs.mongodb.com/spark-connector/master/faq/ .Однако, после того, как я прочитал это, я не понимаю, как настроить на всех.
BobXWu
1

голосов
1

ответ
34

Просмотры

video is not fetching completly,

Я хочу получать видео с MongoDB, чем она должна играть, что видео до размера видео, но его играет лишь некоторые второй, я дал maxUploadSize является 20mb и maxInMemorySize также 20mb, но на странице JSP, его извлечение только 1 Мб видео даже видео размера более чем 1Мб. Я не получаю, что делать, видео должно играть полный объем в соответствии с размером видео здесь контроллер @RequestMapping (значение = «/ радушно-видео-контроллер / {videoObj}», производит = «видео / WebM») @ResponseBody общественного ResponseEntity getVideoForLoginPage (@PathVariable Строка videoObj, HttpServletResponse ответ) бросает IOException {LOG.info ( "Вступление :: getVideoForPost"); BufferedImage bufferedVideoForPost = NULL; URL resourcePath = NULL; байт [] videoArray = NULL; ResponseEntity результат = NULL; LOG.info ( "videoObj ->" + videoObj); Файл videoFromMongo = новый файл (VIDEO_FROM_PATH + videoObj); GridFSDBFile видеофайле = MongoUtility.getVideoFileFromMongo (videoObj); videoFile.writeTo (videoFromMongo); bufferedVideoForPost = ImageIO.read (videoFromMongo); videoFile.getInputStream (); HttpHeaders заголовки = новые HttpHeaders (); headers.setContentLength ((INT) videoFile.getLength ()); videoArray = новый байт [(целое) videoFile.getLength ()]; Результат = новый ResponseEntity (videoArray, заголовки, HttpStatus.OK); . VideoFile.getInputStream () следующим образом (videoArray); LOG.info ( "videoArray ->" + videoArray); LOG.info ( "размер videoArray ->" + videoArray.length); возвращать результат; } И это HTML codding она должна играть полное видео, я пытался много, но ничего не работает, плз сказать, что это проблема,
Laxmi Prajapati
1

голосов
0

ответ
21

Просмотры

Перенесите sharded Монго кластер из одного облака службы в другую

Мы мигрирует MongoDB (общий кластер архитектуры) из облачного сервиса на другой. Назовем C1 (источник) и C2 (Dest). Все MongoDB и mongos экземпляры связываются с частным IP (не используется домен, как ожидалось) в С1. я купировались все экземпляры С1, С2, скопированные успешно. Но новый кластер C2 не может работать на скопированные данные, так как новый кластер имеет другую конфигурацию сети (IP, домен шарда серверов и серверов конфигурации). Как я могу избавиться от этой проблемы? Благодарю.
William
1

голосов
1

ответ
117

Просмотры

В чем разница между объяснить ( «executionStats») и равнину объяснить ()

Я вижу, что они возвращают одно и то же, зачем использовать один над другим, то? . Код: Const explainQuery = collection.find () сортировки ({LAST_MODIFIED: -1}). Предел (1); .. Const researchQuery = collection.find () сортировки ({LAST_MODIFIED: -1}) предел (1); Const объяснить = explainQuery.explain ( 'executionStats'); researchQuery.toArray (функция (ERR, данные) {FUNC (ERR, данные, объяснить);})
yodalr
1

голосов
0

ответ
41

Просмотры

MongoDB / Mongoose: агрегат - нужно запросить по диапазону дат

У меня есть аналогичный вопрос к предыдущему, который я имел: Mongoose агрегат, не может динамически добавлять SomeField: {$ нет; нуль} Я пытаюсь выполнить запрос диапазона дат. Это моя попытка синтаксиса, который является неправильным (и выбрасывает такую ​​же ошибку, как указано в предыдущем номере): если (TypeOf dateBeginning === «строка» && dateBeginning = «» && TypeOf dateEnding === «строка» && dateEnding = "") {query.date = {$ и: [{$ GTE: новая Дата (dateBeginning)}, {$ Г: новая Дата (dateEnding)}]!}; }
Jeff Matthews
1

голосов
1

ответ
191

Просмотры

MongoDB: Как изменить значение вложенного документа с помощью драйвера MongoDB Java

"22535512313", "Описание": "Сосна книжный шкаф", "acquisition_date": "07.07.2008", "стоимость": "$ 100"}, "NUMBER_4": { "штрих-код": "142593910527", "Описание" : "Газ-лифт стул", "acquisition_date": "07.07.2008", "стоимость": "$ 100"}}}}} Как изменить объект вакантный с помощью драйвера Java? Я использовал код ниже, но это не похоже на работу. DBCollection Coll = db.getCollection ( "Услуги"); Строка buildingNum = (строка) buildingBox.getValue (); Строка floorNum = (строка) floorBox.getValue (); Строка roomNum = (строка) roomBox.getValue (); BasicDBObject документ = новый BasicDBObject (); document.put ( "building_number", buildingNum); DBCursor dbCursor = coll.find (документ); в то время как (dbCursor.hasNext ()) {DBObject DBO = dbCursor.next (); // DBObject dbObject1 = (DBObject) (((DBObject) dbo.get (floorNum)) получаем (roomNum).); // Строка изменения = floorNum; Строка электронной почты = userDetails.get (0); BasicDBObject пассажир = новый BasicDBObject (); occupant.append (. "$ комплект", новый BasicDBObject () добавляет ( "жилец", адрес электронной почты)); DBObject findRoom = (DBObject) ((DBObject) dbo.get (floorNum)) получаем (roomNum). coll.update (findRoom, пассажир, ложно, ложно); Даже если нет никаких ошибок не будет изменять значение в базе данных. Так как же я могу обновить значение «жилец» с помощью драйвера Java? Есть ли способ, чтобы изменить значение? Как адаптации этого кода?
Muiz Uvais
1

голосов
1

ответ
91

Просмотры

TypeError: Не удается прочитать свойство «текст» неопределенных

router.post ( '/ addtodo', (REQ, Рез, следующий) => {пусть Todo = новый Todos ({текст: req.body.text, дата: новая Дата ()}); Todos.addTodo (TODO, (ERR, Todos, следующий) => {если (ERR) бросок ERR; res.json (Todos);});}); Я пытаюсь сохранить документ в схеме Todo с использованием вышеуказанного метода схемы и методы являются константный todoSchema = mongoose.Schema ({текст: {Тип: String}, дата: {Тип: Дата, по умолчанию: Date.now} }); Const Тодос = module.exports = mongoose.model ( 'Todos', todoSchema); // Получаем документы module.exports.getTodos = (обратный вызов) => {Todos.find (обратный вызов); }; // Добавить документ module.exports.addTodo = (TODO, обратный вызов) => {Todos.create (TODO, обратный вызов); }; Но когда я пытаюсь POST объекта JSON с помощью почтальона он показывает эту ошибку. TypeError: Не удается прочитать свойство «текст»
1

голосов
0

ответ
181

Просмотры

Presto не используется индекс с MongoDB запроса

Я создал Presto (0,191) экземпляра с одного координатором и одного работником узла и хочу сделать некоторый анализ данных с данными из нескольких источников, таких как MySQL и MongoDB. Венен я сделать запрос на столе MongoDB «прибыль» Престо, кажется, делает полное сканирование таблицы и не имеет разъем использовать индекс на «the_date»: выберите e._id из mongodb.database.earnings е где e.the_date между меткой времени «2015-01-01 00:00 UTC» и отметка времени «2015-01-02 00:00 UTC» Я читал, что предикат раскрывающийся вниз, только работает, если нет функции участвует в предикатах, поэтому я создал таблицу памяти с одной строкой содержащие два поля метки времени я использую в тех случаях, когда присоединиться к нему с запросом. Запрос выглядит следующим образом и, кажется, с помощью индекса: выберите e._id из mongodb.reporting.dfpearnings е, memory.test.date_range др где е. the_date между dr.begin и dr.excluding_end Теперь, если я хочу, чтобы сгруппировать данные по дням с группой по дате (e.the_date), он будет делать полную проверку снова. Есть ли способ, чтобы обеспечить использование индексов?
Normalo
1

голосов
0

ответ
97

Просмотры

python mongoengine: mongomock drop_collection does not work as expected

When using mongomock to mock mongoengine, the connection.drop_database() method do not work properly: the first time I use it, it works as expected but the second time does not work at all. The following test should be a comprehensive explanation. import mongoengine as me try: import pytest except: pass class DummyDoc(me.Document): pass def test_mongomock(): db_conn = me.connect(db='mongotest', host='mongomock://localhost') db_conn.drop_database('mongotest') dd = DummyDoc() dd.save() assert len(DummyDoc.objects()) == 1 dd = DummyDoc() dd.save() assert len(DummyDoc.objects()) == 2 # First drop_database works as expected! db_conn.drop_database('mongotest') assert len(DummyDoc.objects()) == 0 dd = DummyDoc() dd.save() assert len(DummyDoc.objects()) == 1 dd = DummyDoc() dd.save() assert len(DummyDoc.objects()) == 2 # Second drop_database does not work!! db_conn.drop_database('mongotest') assert len(DummyDoc.objects()) == 0 # Final part of Pytest output: # # Second drop_database does not work!! # db_conn.drop_database('mongotest') # > assert len(DummyDoc.objects()) == 0 # E assert 2 == 0 # E + where 2 = len([, ]) # E + where [, ] = [, ]() # E + where [, ] = DummyDoc.objects if __name__ == '__main__': test_mongomock() The script can be ran as simple python3 script or with pytest.
Riccardo Petraglia
1

голосов
0

ответ
436

Просмотры

MongoDB импортировать файл JSON в уже существующую коллекцию в качестве обновления одной записи

У меня есть коллекция Монго, которая выглядит следующим образом: { "идентификатор": "BM10003", "подсчет": "0", "данные": { "Label1": "value1", "LABEL2": "value2"}} в приведенном выше поле идентификатора коллекции является уникальным, и я использую, что для добавления данных к этому входу. Теперь я хочу, чтобы импортировать файл JSON, который добавляется к этой коллекции под ключ data2. Есть простой командной оболочки, чтобы сделать mongoimport путем поиска идентификатора и просто добавляя jsonarray к этому входу?
Yatish
1

голосов
0

ответ
40

Просмотры

Ошибка с sockets.js

У меня есть эта ошибка с sockets.js: GET HTTP: // локальный: 3000 / socket.io / EIO = 3 & транспорт = опроса и т = M3VEuNw нетто :: ERR_CONNECTION_REFUSED в моем socketCoonection socket.js exports.connectSocket = (ИО) => { socket.on ( 'отправить сообщение-', (сообщение) => {messageService.sendMessage (сообщение, (ответ) => {console.log ( 'сокет отправки сообщений', сообщение); socket.to (message.reciverId). испускают ( '-сообщение Получать', сообщение);});}); } Здесь я написал весь код серверной Socket.io. config.js импорт экспресс от «экспресс»; импорт SocketConnection из '../util/conn.socket'; Класс Config {Конструктор () {this.app = экспресс (); this.socket = разъем; this.http = http.Server (this.app); this.io = this.socket.listen (this.http); }} Слушать (порт) {this.http.listen (порт, () => {log.info ( `Сервер запущен: HTTP: // локальный: $ {порт} /`);}); } В моей стороне клиента, я использую угловой. socket.service.ts импорт {инъекционные} от '@ угловой / ядро'; импорт {} Сообщение от './interfaces/message'; импорт * в гипергликемии от «socket.io-клиент»; Const сокет = io.connect ( 'HTTP: // локальный: 3000 /'); @Injectable () экспорт класс SocketService {конструктор () {} SocketConnection () {} // для отправки сообщения SendMessage (сообщение: Message) {socket.on (message.receiverId) .emit ( 'отправить-сообщение', сообщение) ; //console.log(message); } reciveMessages (сообщение) {socket.emit ( 'Получать-сообщение', сообщение); console.log ( 'сообщение Recived' + сообщение);
Swarnakshyari
1

голосов
0

ответ
59

Просмотры

mongodb - strategy from having relational DB CSV dump imported to highly denormalised mongodb documents

Мы хотим, чтобы перенести данные в MongoDB используя CSV файлы дампа, созданные из Teradata. должно быть обновлены в MongoDB каждую ночь из свежей Teradata Csv самосвала подхода мы соберемся есть данные: Получить файлы CSV, экспортированные из реляционного БД. Они будут очень похожи на структуру таблицы в реляционной БД Импорт файлов CSV в коллекции MongoDB постановочных впоследствии, которая будет зеркальное отображение реляционной структуры БД в терминах нормализуется. Это может быть сделано с помощью сказать mongoimport в ночных партиях. Это будет приводить во многих коллекциях, как мы думаем импортировать каждый «тип» CSV в свою собственную коллекцию, например, Customers.csv и Accounts.csv приведет к двум соответствующим коллекциям же имя. Создание де-нормированные коллекции из коллекций постановочных, готовые к воздействию UI. Выполнить некоторые миграции схемы скрипт, который запрашивает коллекции поэтапности и создает более denormalised и меньше коллекции готовых к использованию в приложении UI.Eg, клиенты и Аккаунты коллекции, после запуска сценария перенастройки должно привести к третьей коллекции говорят коллекции AccountCustomers где Каждая учетная запись документ имеет встроенные клиенты массив (denormalised и никакой необходимости не включается, когда пользовательский интерфейс нуждается в данных) Вопрос: есть ли лучшая стратегия, так как все эти шаги должны завершить каждую ночь, каждую ночь? Вопрос: Является ли mongoimport OK использовать для импорта файлов CSV в ночных партиях. Вопрос: Что такое лучший способ мигрировать (denormalise) коллекцию в пределах одного экземпляра Монго Например, мы StagingDB имея коллекции клиентов и счета, и мы хотим, чтобы достичь состояния, когда мы proddb имея коллекцию accountcustomers который запрашивает коллекцию поэтапности и создает более denormalised и меньше коллекции готовыми к использованию в приложении UI.Eg, клиенты и счетам коллекции, после запуска сценария перенастройки должна привести к третьей коллекции говорят коллекции AccountCustomers, где каждый документ имеет встроенный счет клиентам массив (denormalised и никакой необходимости не включается, когда пользовательский интерфейс нуждается в данных) Вопрос: есть ли лучшая стратегия, так как все эти шаги должны завершить каждую ночь, каждую ночь? Вопрос: Является ли mongoimport OK использовать для импорта файлов CSV в ночных партиях. Вопрос: Что такое лучший способ мигрировать (denormalise) коллекцию в пределах одного экземпляра Монго Например, мы StagingDB имея коллекции клиентов и счета, и мы хотим, чтобы достичь состояния, когда мы proddb имея коллекцию accountcustomers который запрашивает коллекцию поэтапности и создает более denormalised и меньше коллекции готовыми к использованию в приложении UI.Eg, клиенты и счетам коллекции, после запуска сценария перенастройки должна привести к третьей коллекции говорят коллекции AccountCustomers, где каждый документ имеет встроенный счет клиентам массив (denormalised и никакой необходимости не включается, когда пользовательский интерфейс нуждается в данных) Вопрос: есть ли лучшая стратегия, так как все эти шаги должны завершить каждую ночь, каждую ночь? Вопрос: Является ли mongoimport OK использовать для импорта файлов CSV в ночных партиях. Вопрос: Что такое лучший способ мигрировать (denormalise) коллекцию в пределах одного экземпляра Монго Например, мы StagingDB имея коллекции клиентов и счета, и мы хотим, чтобы достичь состояния, когда мы proddb имея коллекцию accountcustomers
Mohsin Hakak
1

голосов
0

ответ
356

Просмотры

Отправка агрегации MongoDB с диапазоном дат от PHP

Я пытаюсь отправить агрегацию MongoDB из моего приложения Laravel, что бы агрегировать данные только в диапазоне дат установки. Приложение имеет сборщик диапазона дат, который возвращает FromDate и Todate который я преобразовывая в формат ISODate и чем передача переменных в трубопровод агрегации, как показано ниже: частная функция getMongoData ($ FromDate = NULL, $ Todate = NULL) {$ сбор = (новый клиент ()) -> database-> коллекция; $ FromDate = "ISODate ( '$ FromDate.. "')"; $ Todate = "ISODate ( '$ Todate.. "')"; $ Трубопровод = [[ '$ матч' => [ 'EVENT_DATE' => [ '$ GT' => $ FromDate, '$ л' => $ Todate],],],]; $ Результат = $ галерею-> агрегат ($ трубопровода) -> ToArray (); Это всего лишь этап матч агрегации, как и без него остальная часть агрегации, кажется, работает хорошо. С этой датой в диапазоне его возвращение пустого массива Это то, что мое приложение в настоящее время отправки Монго: event_date: {$ Gt: "ISODate ( '2017-01-10T00: 00: 00 + 01: 00')", $ л: «ISODate („2018-01-10T23: 59: 59 + 01: 00“)»} Im довольно новый для PHP и Монго, и этой борьбы дает мне некоторые серьезные головные боли, так что я был бы признателен за любые советы по этому вопросу
davidM
1

голосов
1

ответ
321

Просмотры

How to use ObjectId in $lookup using mongodb nodejs drivers

Пожалуйста, помогите мне найти подходящую коллекцию решения были пользователи детали хранятся app_users {_ID: {$ подъязычная: «abcd1235a6ad4a56dadasd»}, user_name: «Викас Kandari», user_dp: «ASDAD486412.jpg»} коллекция, где пользователи заказы хранятся заказы {_id: {$ подъязычная: "asdasdasdasdasd"}, user_id: "abcd1235a6ad4a56dadasd", booking_item: "некоторый продукт", booking_date: "DateTime"} Lookup (слева Join) запрос я использую это сопзЬ MongoClient = требуется ( 'MongoDB') .MongoClient; Const утверждают = требуется ( 'утверждать'); Const URL = 'MongoDB: // корень: корень @ локальный: 3000 / приложение'; Const DbName = 'приложение'; MongoClient.connect (URL, функция (эээ, клиент) {assert.equal (эээ, нуль); console.log ( "успешно подключен к серверу"); Const дБ = client.db (DBNAME); Const коллекция = db.collection ( 'пользователей'); collection.aggregate ([{$ подстановки: {из: '', заказы localField: '_ID', foreignField: 'user_id', как: 'заказа'}}]). ToArray (функция (ERR, документы) {assert.equal (ERR, NULL); console.log (документы);}); client.close (); }); Я хочу, чтобы выбрать заказы с там соответствующими пользовательскими данными из коллекций пользователей, но его возвращения пустого, потому что MongoDB сравнивает строку с ObjectId так есть ли способ, чтобы выполнить эту задачу? ToArray (функция (ERR, документы) {assert.equal (ERR, NULL); console.log (документы);}); client.close (); }); Я хочу, чтобы выбрать заказы с там соответствующими пользовательскими данными из коллекций пользователей, но его возвращения пустого, потому что MongoDB сравнивает строку с ObjectId так есть ли способ, чтобы выполнить эту задачу? ToArray (функция (ERR, документы) {assert.equal (ERR, NULL); console.log (документы);}); client.close (); }); Я хочу, чтобы выбрать заказы с там соответствующими пользовательскими данными из коллекций пользователей, но его возвращения пустого, потому что MongoDB сравнивает строку с ObjectId так есть ли способ, чтобы выполнить эту задачу?
Vikas Kandari
1

голосов
2

ответ
293

Просмотры

Литой или преобразовать объект MongoDB _id в строку в трубопроводе Logstash

Я работаю над созданием трубопровода для получения данных из MongoDB в ElasticSearch с помощью Logstash. Я использую dbschema MongoDB JDBC драйвера. Я могу подключиться к базе данных с помощью драйвера, но я столкнулся вопрос с _id. Как и в MongoDB ИТС объекта типа Так я получаю проблемы с конвертером. Вот ошибка я получаю. Исключение при выполнении запроса JDBC {: исключение => #} Мой трубопровод, как показано ниже: вход {{jdbc_driver_library JDBC => «C: /logstash-6.1.0/logstash-6.1.0/bin/driver/mongo/dbschema/mongojdbc1 .2.jar "jdbc_driver_class => "Java :: com.dbschema.MongoJdbcDriver" jdbc_connection_string => "JDBC: MongoDB: //abc.com: 27017 / тест" jdbc_user => "" оператор =>" db.getCollection (» Сотрудник ".) найти ({})» кодек => JSON}} {выход elasticsearch {хостов => «HTTP: // локальный:
Mahajan344
1

голосов
0

ответ
260

Просмотры

Regex с символом новой строки является соответствие строки

У меня есть регулярное выражение выражение в запросе Монго Метеор: Programs.find ({Примечания: {$ регулярное выражение: '^ ((?! REFUNDED)) * $.}}) Выборки () Это следует читать «Return. все документы, в которых поле «Notes» (строка поле) не содержит строку «REFUNDED». Я нахожу, что проблема, когда текст в поле Notes содержит символ новой строки «\ п». Когда он не найдет новый символ строки, он делает заявление верно. Например, если документ 1 в поле Примечания была строка «Строка один. \ NLine два», документ 1 не будет возвращено, даже если «REFUNDED» не в строке. Какой самый лучший способ обойти это?
flimflam57
1

голосов
1

ответ
377

Просмотры

Как найти соответствующие документы «StartsWith» на бесклассовом MongoDB используя C # драйвера

У меня есть документы: { «обработчик»: «север»} { «обработчик»: «юг»} { «обработчик»: «запад»} { «обработчик»: «восток»} Я хочу найти обработчик соответствия от заданного строка ввода, например, «Westtown» и ожидает, что обработчик будет «запад». Пожалуйста, помогите, мой код ниже не работает. Строка inputstring = "Westtown"; IMongoCollection коллекция = NULL; Список страниц = NULL; попробуйте {сбор = db.GetCollection ( "обработчик"); страницы = ждут collection.Find (х => (inputstring.StartsWith (х [ "обработчик"] AsString)).) ToListAsync (). } ... Я использую бесклассовую схему, поэтому я использую BsonDocument на динамике.
yosi madsu
1

голосов
2

ответ
82

Просмотры

Mongoose promise in foreach failed in my case

Как сделать обещание с Foreach? Я хочу, чтобы все рабочие места, но и получить данные заявителей. Моя схема работы уже есть идентификатор заявителя, но, как запрос пользователя и объединить их детали на выходе? . Job.find ({}), а затем (результат => {result.forEach (OBJ => {Const applicant_id = obj.applicant._id, если (applicant_id) {User.findOne ({_ ID: applicant_id}) .then (пользователь = > {возвращение res.json ({состояние: 1, данные: {... OBJ, заявитель: {... пользователя}}})}.)}})}) задвижка (ERR => {если (ERR) { вернуться res.status (400) Пошлите ({тзд: эээ}).}}) Я попытался Promise, но я застрял пользователя, переходящего в OBJ работы, Job.find ({}), то (результат => {пусть promiseArray = [] result.forEach (OBJ =>
Jenny Mok
1

голосов
1

ответ
33

Просмотры

Правильный подход к WebSockets

Я строй приложения, и хотел бы знать, что правильный подход был бы для использования WebSockets, чтобы доставить в приложении живых уведомлений. Мое приложение использует Express, сокет IO & MongoDB. Я использую Passport JS для аутентификации пользователей и то, что называется passportSocketIo подключить паспорт и сокет IO вместе. Функциональность Я хотел бы иметь это разделяемые уведомления. В основном, когда несколько пользователей частью группы и один из пользователей обновляет что-то делать с группой, я хочу, чтобы все пользователи, принадлежащие к этой группе, чтобы получить уведомление через веб-сокетов. Мой основной вопрос должен все эти пользователи используют один и тот же WebSocket для того, чтобы все получить такое же уведомление? IE, если кто-то подключается к группе, то я поставил группу WebSocket идентификатор их WebSocket идентификатора, то любые следующие люди, которые соединяют бы предположить, что идентификатор тоже для того, чтобы иметь все на тот же сокет, или я должен хранить пользователи WebSocket идентификатора на каждый раз, когда они открыть соединение WebSocket с моим приложением и хранить его в Монго DB сказать по модели группы, возможно, например, так: activeSocketIds: [ «id1», «ID2», и т.д. ...] и всякий раз, когда происходят изменения в группе, она идет и найти activeSocketIds в этой группе и свистит весь этот уникальный идентификатор сообщения, которое, конечно, будет уведомлением. Может быть, оба из них не правильный подход, но хотел бы несколько советов о том, что будет! Спасибо он идет и найти activeSocketIds в этой группе и свистит весь этот уникальный идентификатор сообщения, которое, конечно, будет уведомлением. Может быть, оба из них не правильный подход, но хотел бы несколько советов о том, что будет! Спасибо он идет и найти activeSocketIds в этой группе и свистит весь этот уникальный идентификатор сообщения, которое, конечно, будет уведомлением. Может быть, оба из них не правильный подход, но хотел бы несколько советов о том, что будет! Спасибо
red house 87
1

голосов
0

ответ
322

Просмотры

Бульдозер отображение Map

Я использую Бульдозер Mapper для отображения своих объектов между дао слоем (MongoDB используется) и бизнес-логику. На самом деле, объекты структура идентична. Класс документа (семантический ближе к бизнес-логике) общественный класс Document {частного идентификатор строки; частная схема строки; частные карты атрибутов = новый HashMap (); } Класс DocumentEntity (семантический ближе к дао слою) общественный класс DocumentEntity {@Id частного строкового идентификатору; @Field ( «схема») частная строка схемы; @Field ( "атрибуты") частные карты атрибутов = новый HashMap (); } Вот пример бульдозера-бобов-mappings.xml DocumentEntity Документ А вот метод, который преобразует один объект в другой перед сохранением его в MongoDB DocumentEntity toEntity (документ Документ) {DocumentEntity объекта = новый DocumentEntity (); mapper.map (документ, лицо); вернуть объект; } Как вы можете видеть один атрибуты поля является Map. Все работало хорошо, пока я не попытался отобразить сложный тип «внутри» объекта. Мне нужно иметь список объектов с двумя полями каждая, как значение этой карты. На верхнем уровне есть REST API, который обеспечивает сохранение объектов в MongoDB. Но из-за неправильных типов отображения бульдозерного становятся недействительными. JSON ввода { "схемы": "sch_1", "атрибуты": { "objUID": "obj_1", "nestedObjects": [{ "objUID": "obj_1_1", "objSchema": "sch_1_1"}, { «objUID «: "obj_1_2", "objSchema": "sch_1_2" }]}} И был спасен после отображения: { "схемы": "sch_1", "атрибуты": { "objUID": "obj_1", "nestedObjects": [ "{objUID = obj_1_1, objSchema = sch_1_1}", "{objUID = obj_1_2, objSchema = sch_1_2}"]}} Таким образом, вместо того, чтобы получать список объектов, я просто получить список строк. Как следует настроить бульдозер, чтобы получить правильное отображение объектов?
1

голосов
1

ответ
98

Просмотры

Mongoose / MongoDB .find запрос () любой Int> 0?

Таким образом, у меня есть мангуста схема, которая выглядит следующим образом. вар информация = новый mongoose.Schema ({ '123': {доступно: {Тип: 'Строка'}, onOrder: {тип: 'Строка'}}, '456': {доступно: {Тип: 'Строка'}, onOrder: {типа: 'строка'}}, '789': {доступно: {типа: 'Строка'}, onOrder: {типа: 'Строка'}}}); Я ищу, чтобы найти и номер в соответствующем поле, которое> 0. Лишь некоторые из них будут заполнены в любой момент времени. «Пустые» строки всегда будут заполнены значением числа «0.00000000», если не некоторое целое число в нем. Я ищу для запроса, который будет проходить через и найти и строки, которые не 0.00000000 или может преобразовывать строки в целые числа, то можно найти что-нибудь> 0. Я чувствую, что моя первая мысль о нахождении их на основе строк является своего рода Hacky в пути, и я ищу для более постоянного способа получения номера из базы данных, как это. Я Пытался сделать это с $ в уже, но я не могу заставить его работать.
Echo
1

голосов
1

ответ
314

Просмотры

доктрины MongoDB Формирователь запросов проекции с пронумерованными индексами

Мне нужно, чтобы ограничить объем данных, возвращаемых доктриной MongoDB запроса. Я мог бы использовать выбор проекта для простых полей или даже простых встроенных полей массива, как normalizedData.ean. Это прекрасно работает. Однако у меня есть необходимые данные в форме, как следующие: "ценности": [{ "_id": ObjectId ( "59cbd73d83218bf7668b468d"), "атрибут": NumberLong ( "1"), "субъект": DBRef ( "pim_catalog_product" , ObjectId ( "59148d2583218bf7508c1199"), "akeneo_pim"), "VARCHAR": "10011060"}, { "_id": ObjectId ( "59cbd73d83218bf7668b468e"), "атрибут": NumberLong ( "207"), "лицо": DBRef ( "pim_catalog_product", ObjectId (» Так что я ищу это учение Монго DB Query Builder, который способен возвращать только те объекты, которые на самом деле содержат значение с номерами атрибутов 110 и 207, плюс я только хочу, чтобы вернуть данные в пределах этих значений. У меня есть конструктор запросов рабочий, который работает с уникальными (строка) индексов: $ запрос = $ productRepository-> createQueryBuilder () -> гидрат (ложь) -> выберите (массив ( 'normalizedData.sku')) -> поле ( '_ ид «) -> в entityIds ($) -> предел ($ предел) -> пропуска ($ смещение); EDIT: Я нашел способ запроса для этих «ценностей», но я не могу выступать более чем один атрибут с этим запросом: $ дь = $ productRepository-> createQueryBuilder (); $ Запрос = $ дь -> гидрат (ложь) -> выберите (массив ( 'normalizedData.sku')) -> selectElemMatch ( ' значения, $ qb-> выражение () -> поле ( 'атрибут') -> в (массив (117, 110)) -> addAnd ($ qb-> выражение () -> поле ( 'локаль') -> в (массив ( 'it_IT', 'de_DE')))) -> поле ( '_ идентификатор') -> в ($ entityIds) -> поле ( 'значения') -> elemMatch ($ qb-> выражение () - > поле ( 'атрибут') -> в (массив (117, 110))) -> предел ($ предел) -> SKIP ($ смещение); То, что я пытаюсь получить здесь оба атрибута (117 и 110), но я получаю только один. Кроме того, я получаю некоторые результаты, где ни один из атрибутов присутствует, хотя я представлял себе, что отфильтровываются те с -> поле ( «значения») -> elemMatch ($ qb-> выражение () -> поле ( «атрибут») -> в (массив (117, 110))). Очевидно, есть еще какая-то основа, мне нужно, чтобы понять о MongoDB. Любой вид помощи будет весьма признателен. Как я могу получить только те объекты, которые имеют либо атрибут 117 и / или 110 в пределах своей коллекции «ценность», а также только получить эти данные атрибутов? Примечание: В тот же атрибут ID может использоваться несколько раз с разными языками. Я хотел бы быть в состоянии ограничить результат языков, указанных, а также.
Micha
1

голосов
0

ответ
158

Просмотры

Не удается прочитать свойство текст не определен

У меня есть простой RESTful API, который подключается к базе данных и создает элемент Todo. Тем не менее я продолжаю получать ошибки не удается прочитать свойство текст не определено. Это правильно подключения к базе данных MLAB я сделать пост запрос с помощью почтальона я получаю сообщение об ошибке: Не удается прочитать свойство текст неопределенными Я знаю, что мой синтаксис является правильным, я не могу понять, почему он не создает эту коллекцию у меня есть мой (TODO) модель корректно. Я пропустил некоторые конфигурации из? Вот мой код: app.post ( "/ Todos", (REQ, Рез) => {вар TODO = новый Todo ({текст:. Req.body.text}) todo.save (), то ((док) = > {res.send (док);}, (е) => {res.status (400) Пошлите (е);});}); app.get ( "/ Todos", (REQ, Res) => {Todo.find () затем ((Todos) => {res.send ({Todos});}., (е) => {разреш. статус (400) Пошлите (е);}); }); app.listen (порт, () => {console.log ( `работы на порте $ {порт}`)}); module.exports = {приложение}; модели: вар мангуст = требуется ( «Мангуст»); вар Todo = mongoose.model ( "Todo", {Текст: {Тип: String, требуется: правда, MinLength: 1, отделка: истинно}, завершено: {Тип: Boolean, по умолчанию: FALSE}, completedAt: {Тип: Number , по умолчанию: NULL}}); module.exports = {Todo}; База данных: вар мангуст = требуется ( «Мангуст»); mongoose.Promise = global.Promise; mongoose.connect (process.env.MONGODB_URI ||); module.exports = {мангуст}; Ответ от console.log (REQ): IncomingMessage {_readableState: ReadableState {ObjectMode: ложь, highWaterMark: 16384, буфер: BufferList {головка: NULL, хвост: нулевой, длина: 0}, длина: 0, трубы: нуль,
user9219996
1

голосов
0

ответ
34

Просмотры

Монго DB - Коллекция графа значения атрибута

т найти запрос для подсчета количества имен (врачи) у меня есть в моей базе данных. Я пытался что-то вроде collection.find ({ «врачей»: { «$ существует»: 1}}). COUNT (), но чем я получаю только количество компаний, где врачи существует. Нужна помощь, пожалуйста! Большое спасибо!
Chris_Du
1

голосов
0

ответ
86

Просмотры

Запрос совпадающее значение словаря в Монго

У меня есть документ с полем под названием «ВЧС», чьи значения словарь: «123»: «а», «456»: «DEF», «789»: «ГХИ» Я в курсе поиска для конкретного элемента в массиве, но не по значению в словаре. Я хотел бы получить все документы, которые имеют «размораживание» в своих значениях ВЧСА. Спасибо!
Cryptite
1

голосов
1

ответ
77

Просмотры

Как портировать этот Mongoose плагин для Mongoose 5

Мне нужна помощь в портировании этого плагин для Mongoose 5 https://github.com/janez89/mongoose-materialized плагин, вероятно, не работает из-за mpromise устаревшим на Mongoose 5. получает ошибку о запуске какого-либо метод с использованием мангустом схемой посыла распознавателя неопределенным является не функция Однако, когда я пытаюсь заменить mongoose.promise, я не могу понять, как включить в новое обещание распознаватель
Enrique Sabalza
1

голосов
0

ответ
67

Просмотры

Express server crashes after MongoDB performs an operation

Я кодирование до сервера Node.js с помощью ExpressJS и MongoDB с MongooseJS. У меня есть коллекция, в которой я хочу, чтобы каждый документ, чтобы жить только в течение 24 часов. После этого я хочу DB, чтобы удалить документ. Я использовал два подхода - чистый раствор MongoDB и с использованием пакета НОЙ мангуст-ТТЛИ. Каждый из них работает так же в моем случае - Монго делает запрос, который удаляет слишком старые документы и сразу после этого мои ExpressJS сервера падает с ошибкой: Ошибка: сокет повесил трубку. Код для мангуст-ТТЛ случае: Const = ТТЛ требуется ( «Мангуст-ТТЛ»); Const = weatherMeasurementsSchema схема ({parentRoomId: {Тип: Schema.Types.ObjectId, ссылка: "Номер"}, температура: Количество, влажность: Количество, createdAt: Дата}); weatherMeasurementsSchema.plugin (ТТЛ, {ТТЛ: "1й", интервал: "1й"}); Код для чистого MongoDB случая: дБ. measurements.createIndex ({ «createdAt»: 1}, {expireAfterSeconds: 60}) Для тестирования я установил ТТЛ и интервальных полей всего 1 минуту, так что я могу обобщать ранее. У меня совершенно не знаю, что это неправильно, не что-то с подключением к БД? Для подключения к БД я использую: mongoose.connect ( "MongoDB: //127.0.0.1/wisehome", {useMongoClient: истинный}); EDIT: Я собрал сообщения об ошибках (одинакова для обоих случаев): Ошибка: разъем повесить на createHangUpError (_http_client.js: 253: 15) в Socket.socketOnEnd (_http_client.js: 345: 23) в emitNone (events.js : 91: 20) в Socket.emit (events.js: 185: 7) при endReadableNT (_stream_readable.js: 974: 12) _combinedTickCallback (внутренний / процесс / next_tick.js: 80: 11) в process._tickCallback (внутренний /process/next_tick.js:104:9) 60}) Для тестирования я установил ТТЛ и интервальных полей всего 1 минуту, так что я могу обобщать ранее. У меня совершенно не знаю, что это неправильно, не что-то с подключением к БД? Для подключения к БД я использую: mongoose.connect ( "MongoDB: //127.0.0.1/wisehome", {useMongoClient: истинный}); EDIT: Я собрал сообщения об ошибках (одинакова для обоих случаев): Ошибка: разъем повесить на createHangUpError (_http_client.js: 253: 15) в Socket.socketOnEnd (_http_client.js: 345: 23) в emitNone (events.js : 91: 20) в Socket.emit (events.js: 185: 7) при endReadableNT (_stream_readable.js: 974: 12) _combinedTickCallback (внутренний / процесс / next_tick.js: 80: 11) в process._tickCallback (внутренний /process/next_tick.js:104:9) 60}) Для тестирования я установил ТТЛ и интервальных полей всего 1 минуту, так что я могу обобщать ранее. У меня совершенно не знаю, что это неправильно, не что-то с подключением к БД? Для подключения к БД я использую: mongoose.connect ( "MongoDB: //127.0.0.1/wisehome", {useMongoClient: истинный}); EDIT: Я собрал сообщения об ошибках (одинакова для обоих случаев): Ошибка: разъем повесить на createHangUpError (_http_client.js: 253: 15) в Socket.socketOnEnd (_http_client.js: 345: 23) в emitNone (events.js : 91: 20) в Socket.emit (events.js: 185: 7) при endReadableNT (_stream_readable.js: 974: 12) _combinedTickCallback (внутренний / процесс / next_tick.js: 80: 11) в process._tickCallback (внутренний /process/next_tick.js:104:9) У меня совершенно не знаю, что это неправильно, не что-то с подключением к БД? Для подключения к БД я использую: mongoose.connect ( "MongoDB: //127.0.0.1/wisehome", {useMongoClient: истинный}); EDIT: Я собрал сообщения об ошибках (одинакова для обоих случаев): Ошибка: разъем повесить на createHangUpError (_http_client.js: 253: 15) в Socket.socketOnEnd (_http_client.js: 345: 23) в emitNone (events.js : 91: 20) в Socket.emit (events.js: 185: 7) при endReadableNT (_stream_readable.js: 974: 12) _combinedTickCallback (внутренний / процесс / next_tick.js: 80: 11) в process._tickCallback (внутренний /process/next_tick.js:104:9) У меня совершенно не знаю, что это неправильно, не что-то с подключением к БД? Для подключения к БД я использую: mongoose.connect ( "MongoDB: //127.0.0.1/wisehome", {useMongoClient: истинный}); EDIT: Я собрал сообщения об ошибках (одинакова для обоих случаев): Ошибка: разъем повесить на createHangUpError (_http_client.js: 253: 15) в Socket.socketOnEnd (_http_client.js: 345: 23) в emitNone (events.js : 91: 20) в Socket.emit (events.js: 185: 7) при endReadableNT (_stream_readable.js: 974: 12) _combinedTickCallback (внутренний / процесс / next_tick.js: 80: 11) в process._tickCallback (внутренний /process/next_tick.js:104:9)
Aleksander Sadaj
1

голосов
0

ответ
64

Просмотры

Эффективность хранения координат: какая база данных и как выбрать

Я знаю, это какие вопросы часто задают. Но из-за возраста большинства из них и усовершенствований на базах данных, которые я ехал, я думаю, что это может быть хорошей идеей, чтобы создать новый. Я стараюсь хранить эффективность координат (100K) в базе данных и сделать некоторые операции на нем. В других словах, я стараюсь сохранять координаты и получить быстрый доступ к ним. Типичная операция должна возвращать все записи в пределах круга с радиусом 20 км и центром с заданными координатами. Я ехал MongoDB имеет пространственный индекс 2D, который может хранить и Lat долго, как в этом примере: https://stackoverflow.com/a/6026634/6271092 я ехал, что можно хранить и получать координаты в пределах круга с помощью MySQL, КД-дерево и формула гаверсинуса. Так что мой вопрос, в январе 2018 года, что база данных и как я должен использовать для хранения, доступ и сделать некоторые операции с эффективностью координат? Спасибо.
phenric
1

голосов
0

ответ
296

Просмотры

MongoDB: $ раскручивать до того $ группы или после $ группы?

У меня есть коллекция предметов, которые имеют много подразделов и массивов. При загрузке страницы я хочу показать первый элемент с его первыми подразделами и другие предметы только с их именами отображаются. Для сортировки подразделов я использую $ раскрутиться. Должен ли я $ развеяться в начале запроса или после я сгруппировал пункты Производительность мудр, что я должен предпочесть? : Const SearchQuery = collection.aggregate ([{ "$ группа": { "_id": 0, "first_element": { "$ первый": { "проекты": "$" проекты}}}}, {$ размотать : "$ first_element.projects"}, { "$ рода": { "first_element.projects.project.date_modified": - 1}},]); или это сопзЬ SearchQuery = collection.aggregate ([{$ размотки: "$ first_element.projects"}, { "$ рода": { «first_element.
yodalr
1

голосов
0

ответ
83

Просмотры

Сформировать _id в R перед сохранением данных в MongoDB

Я хочу, чтобы генерировать _id в MongoDB от R стороны перед сохранением данных в MongoDB. Я там с помощью пакета mongolite но не эта особенность, другие способы для достижения этой цели?
Terru_theTerror
1

голосов
1

ответ
908

Просмотры

Используйте Guid как ID в MongoDb для C #

Я пытаюсь использовать Guid тип данных, как Id в моем объекте Poco «Параметр». Тем не менее, в то время как я могу записать файлы в базу данных я не могу читать из него. Это функция импорта письма заголовки таблиц из CSV-файла в базу данных. Первая строка файла CSV являются параметры и второй линии блоки эти параметры измеряются. Все остальные строки содержат фактические значения и сохраняются в другой коллекции, как BsonDocument. CSV-файлы являются динамическими и должны быть выбираемыми с помощью выпадающего списка, поэтому параметры записываются в их собственной коллекции. IMongoCollection ParameterCollection = this.MongoDatabase.GetCollection ( "Параметры"); columnNames.Select ((ColumnName, индекс) => новый параметр () {Name = ColumnName, единица = columnUnits [индекс]}) .ToList () .ForEach (параметр => {ParameterCollection.UpdateOne (Builders.Filter.Eq ( "Name", parameter.Name), Builders.Update.Set ( "Unit", parameter.Unit), новые UpdateOptions () {IsUpsert = истина}); }); Это класс параметров: класс параметры общественного {[BsonId] общественности Guid Id {получить; задавать; } Публичная строка Name {получить; задавать; } Строка комму- {получить; задавать; }} Вот метод пытается прочитать данные из документа: GetParameters Публичный список () {вернуть this.MongoDatabase.GetCollection ( «Параметры») .find (Builders.Filter. Empty) .ToList (); } Это приводит следующее сообщение об ошибке: «SystemFormatException:„Произошла ошибка при десериализации свойство Id класса TimeSeriesInterface.DTO.Parameter: Не могу десериализации „„“Guid“ от BsonType“ObjectId Я также попробовал этот атрибут:. [BsonId (IdGenerator = TypeOf (GuidGenerator))] Я не могу найти какой-либо помощи, кроме этих двух атрибутов Они, кажется, решить эту проблему для всех остальных, но я до сих пор продолжаю получать эту ошибку я могу добавить. что импорт и функция чтения являются частями различных классов каждого называя их собственный новый MongoClient () GetDatabase (MongoDatabaseRepository.DatabaseName). но когда я использую ObjectId как тип данных, я получаю данные, так что я не думаю, что это проблема. Почему бы не использовать ObjectId как тип данных? У нас есть дополнительный проект для доступа к базе данных, и я не хочу, чтобы добавить сборку MongoDB повсюду только потому, что другие проекты используют Pocos и требуют ссылок на эту противную маленькую ObjectId. EDIT: Это отображение используется в конструкторе после предложения по AlexeyBogdan (заранее это просто вызов автокарта ()): публичная MongoDatabaseRepository (строка ConnectionString) {this.MongoDbClient = новый MongoClient (); this.MongoDatabase = this.MongoDbClient.GetDatabase (MongoDatabaseRepository.DatabaseName); BsonClassMap.RegisterClassMap (parameterMap => {parameterMap.AutoMap (); parameterMap.MapIdMember (параметр => parameter.Id);}); } общественного MongoDatabaseRepository (строка ConnectionString) {this.MongoDbClient = новый MongoClient (); this.MongoDatabase = this.MongoDbClient.GetDatabase (MongoDatabaseRepository.DatabaseName); BsonClassMap.RegisterClassMap (parameterMap => {parameterMap.AutoMap (); parameterMap.MapIdMember (параметр => parameter.Id);}); } общественного MongoDatabaseRepository (строка ConnectionString) {this.MongoDbClient = новый MongoClient (); this.MongoDatabase = this.MongoDbClient.GetDatabase (MongoDatabaseRepository.DatabaseName); BsonClassMap.RegisterClassMap (parameterMap => {parameterMap.AutoMap (); parameterMap.MapIdMember (параметр => parameter.Id);}); }
1

голосов
1

ответ
226

Просмотры

MongoDB ошибка: DNSProtocolError: Неверный формат записи для «»: ожидалось SRV записи, нашел что-то другое

Я только что создал аккаунт MongoDB с бесплатной организованной группой. Я хочу подключиться к кластеру через командную строку, но я получаю сообщение об ошибке: DNSProtocolError: Неверный формат записи для «»: ожидалось SRV записи, нашел что-то еще, чтобы подвести итоги того, что я сделал: я просто пошел в свой счет онлайн и нажал на «Connect с Монго Shell»; они дают мне команду, которую я должен скопировать и вставить в моей командной строке: Монго «MongoDB + SRV: //testcluster-jqeq3.mongodb.net/test» --username админ Так что я вошел в эту команду в моей командной строки, но это дает здесь-выше ошибка. Может кто-то помочь мне, пожалуйста? Вот полный след командной строки: C: \ Users \ Conserto> Монго "MongoDB + SRV: //testcluster-jqeq3.mongodb.net/test" --username админ DNSProtocolError: Неверный формат записи для "":
bretondev
1

голосов
0

ответ
91

Просмотры

Pre remove hook is firing but not deleting reference (Mongoose)

I added a pre-remove hook to the "catch schema" to delete all references in the "location schema." Here is my catch model: var mongoose = require("mongoose"); var catchSchema = mongoose.Schema({ species: String, weight: String, image: String, catchlocation: String, catchlocationid: String, description: String, timePosted: { type: Date, default: Date.now }, author: { id: { type: mongoose.Schema.Types.ObjectId, ref: "User" }, username: String } }, {timestamps: true} ); catchSchema.pre("remove", function(next) { console.log("The remove function has fired"); Location.remove({ catches: this._id }, next); }); module.exports = mongoose.model("Catch", catchSchema); And here is the location schema that's holding the references: var locationSchema = new mongoose.Schema({ name: String, gps: String, thumbnail: String, image: String, description: String, catches: [ { type: mongoose.Schema.Types.ObjectId, ref: "Catch" } ] }); var Location = mongoose.model('Location', locationSchema); The strange thing here is when deleting a "catch" the pre-remove hook is being fired, but the referencing ObjectId is not being deleted.
Ronald Long
1

голосов
0

ответ
125

Просмотры

Граф появления каждого значения внутри массива для каждого документа с MongoDB

У меня есть проблема с MongoDB, что я не в состоянии решить ... У меня есть список документов и каждый документ содержит массив строки под названием «типы». Вот пример: { "_id": 19841, "типы": [ "А", "А", "B", "C"], "other_fields": 1, / * 2 * / { "_ID": 11212 , «типы»: [ «А», «в»], «другие поля»: 1,} .... Я хотел бы добавить, внутри каждого документа, объект (или даже другой структуре данных), который содержит номер появления каждого элемента, содержащихся внутри «типов» массива. Я хотел бы иметь результат, как этот: { "_id": 19841, "типы": [ "A", "А", "В", "C"], "вхождений": { "А": [ "2"], "В": [ "1"], "С": [ "1"]} «other_fields ": 1, / * 2 * / { "_id": 11212, "типы": [ "А", "В"], "вхождений": { "А": [ "1"], "В": [ «1»]} «другие поля»: 1,} .... Я добавил поле с именем «вхождения», который содержит то, что я хочу. Я пытаюсь с несколькими запросами, но я не в состоянии достичь ожидаемого результата ... Любые предложения? Спасибо! "В", "С"], "вхождений": { "А": [ "2"], "В": [ "1"], "C": [ "1"]} "other_fields": 1, / * 2 * / { "_id": 11212, "типы": [ "A", "B"], "вхождений": { "А": [ "1"], "B": [ "1"] ,} «другие поля»: 1,} .... Я добавил поле с именем «вхождение», который содержит то, что я хочу. Я пытаюсь с несколькими запросами, но я не в состоянии достичь ожидаемого результата ... Любые предложения? Спасибо! "В", "С"], "вхождений": { "А": [ "2"], "В": [ "1"], "C": [ "1"]} "other_fields": 1, / * 2 * / { "_id": 11212, "типы": [ "A", "B"], "вхождений": { "А": [ "1"], "B": [ "1"] ,} «другие поля»: 1,} .... Я добавил поле с именем «вхождение», который содержит то, что я хочу. Я пытаюсь с несколькими запросами, но я не в состоянии достичь ожидаемого результата ... Любые предложения? Спасибо! "С"], "вхождений": { "А": [ "2"], "В": [ "1"], "С": [ "1"]} "other_fields": 1, / * 2 * / { "_id": 11212, "типы": [ "А", "В"], "вхождений": { "А": [ "1"], "В": [ "1"],} «другое поля»: 1} .... Я добавил поле с именем„вхождение“, который содержит то, что я хочу. Я пытаюсь с несколькими запросами, но я не в состоянии достичь ожидаемого результата ... Любые предложения? Спасибо! "С"], "вхождений": { "А": [ "2"], "В": [ "1"], "С": [ "1"]} "other_fields": 1, / * 2 * / { "_id": 11212, "типы": [ "А", "В"], "вхождений": { "А": [ "1"], "В": [ "1"],} «другое поля»: 1} .... Я добавил поле с именем„вхождение“, который содержит то, что я хочу. Я пытаюсь с несколькими запросами, но я не в состоянии достичь ожидаемого результата ... Любые предложения? Спасибо! { "А": [ "2"], "В": [ "1"], "С": [ "1"]} "other_fields": 1, / * 2 * / { "_id": 11212, " типы»: [ "A", "B"], "вхождения": { "A": [ "1"], "B": [ "1"]} "другие поля": 1} ... . Я добавил поле с именем «вхождение», который содержит то, что я хочу. Я пытаюсь с несколькими запросами, но я не в состоянии достичь ожидаемого результата ... Любые предложения? Спасибо! { "А": [ "2"], "В": [ "1"], "С": [ "1"]} "other_fields": 1, / * 2 * / { "_id": 11212, " типы»: [ "A", "B"], "вхождения": { "A": [ "1"], "B": [ "1"]} "другие поля": 1} ... . Я добавил поле с именем «вхождение», который содержит то, что я хочу. Я пытаюсь с несколькими запросами, но я не в состоянии достичь ожидаемого результата ... Любые предложения? Спасибо! ], "С": [ "1"]} "other_fields": 1, / * 2 * / { "_id": 11212, "типы": [ "A", "B"], "вхождений": { " А»: [ "1"], "B": [ "1"]} "другие поля": 1,} .... Я добавил поле с именем "вхождения", который содержит то, что я хочу. Я пытаюсь с несколькими запросами, но я не в состоянии достичь ожидаемого результата ... Любые предложения? Спасибо! ], "С": [ "1"]} "other_fields": 1, / * 2 * / { "_id": 11212, "типы": [ "A", "B"], "вхождений": { " А»: [ "1"], "B": [ "1"]} "другие поля": 1,} .... Я добавил поле с именем "вхождения", который содержит то, что я хочу. Я пытаюсь с несколькими запросами, но я не в состоянии достичь ожидаемого результата ... Любые предложения? Спасибо!
sabfon
1

голосов
2

ответ
111

Просмотры

aggregate group distinct on array of objects after querying

}]} То, что я хочу, чтобы это получить все продукты, которые имеют { «ID»: «WEBAKKUNDE», значение: 1} или { «ID»: «WEBPAKFTTH», «значение»: «1»} и из этих продуктов, чем только вернуть все отчетливый { «ID»: «Ш1»} объектов. Я пытаюсь что-то вроде этого:. Db.getCollection ( 'продуктов') агрегата ([{$ размотки: '$ атрибутов'}, {$ спичка: {$ или: [{$ и: [{ "attributes.id ":" WEBAKKUNDE "}, {" attributes.value ":" 1 "}]}, {$ и: [{" attributes.id ":" WEBPAKFTTH "}, {" attributes.value ":" 1" }] }]}},]), но я не знаю, как получить различные объекты из возвращенных продуктов.
Bujar Deari

Просмотр дополнительных вопросов