После вставки данных через mongoose-double документ не найден - PullRequest
0 голосов
/ 17 сентября 2018

Я борюсь с mongodb, mongoose, mongoose-double и некоторыми запросами поиска по созданным данным.

Среда:

  • MongoDB: 3.6
  • mongoose: 4.13
  • mongoose-double: 0.0.1

Я использую https://www.npmjs.com/package/mongoose-double, потому что на самом деле я использую mongoose 4.13.x и новый @ mongoosejs / doubleверсия требует mongoose 5.x

После вставки некоторых данных в схему MongoDB (с использованием встроенного документа - но я не думаю, что это проблема) с использованием mongoose-double dataType связанные данные не могут быть найдены черезпростой запрос.

Встроенная схема выглядит следующим образом:

const mongoose = require("mongoose");
require('mongoose-double')(mongoose);
const barsSchema = new mongoose.Schema({
  val: mongoose.Schema.Types.Double
}

Окружающий документ:

const mongoose = require("mongoose");
require('mongoose-double')(mongoose);
const foosSchema = new mongoose.Schema({
  bars: [barsSchema]
}

После вставки некоторых данных через mongoose с показательными значениями, такими как: 2.86530674849058e + 161

База данных выглядит так:

{
    "_id" : ObjectId("5b9f86c53db736eec3cdba00"),
    "bars" : [ 
        {
            "val" : 2.86530674849058e+161
        }, 
        {
            "val" : 2.86530674849058e+161
        }, 
        {
            "val" : 3.86530674849058e+161
        }
    ]
}

Со всеми "val", чтобы быть двойным ... Я проверил коллекцию через RoboMongo.

Но при простом:

db.getCollection('foo').find({
    'bars.val': 2.86530674849058e+161
})

Ничего не будет найдено.

Если я открываю документ с помощью RoboMongo и нажимаю edit -> save (без каких-либо реальных изменений), запрос работает и документ будет найден .

Collection foo , и документ будет выглядеть одинаково - и поле var все еще имеет тип double ... Ярастерян ...

Есть идеи, как получить более подробную информацию об этом поведении?

Заранее спасибо, Ральф

1 Ответ

0 голосов
/ 18 сентября 2018

Как указал dnickless ... robomongo произвел небольшую «настройку» моих данных ... и поиск по данным, отображаемым из robomongo, не был успешным, пока эти «неверные» данные не отображались в mongodb.

  • Мое приложение сохранено: 2.865306748490577e + 161
  • RoboMongo отображается: 2.86530674849058e + 161
  • так что я искал с 2.86530674849058e + 161 и ничего не нашел
  • сохранить этот «испорченный» документ через RoboMongo
  • и теперь вы найдете что-то с «ложными» данными 2.86530674849058e + 161

Я включил ведение журнала запросов на mongodb через

db.setProfilingLevel(2)
db.system.profile.find().pretty()

чтобы проверить, что было сохранено и как выглядел запрос. Это дало мне последний намек.

Решено для меня - спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...