Я борюсь с 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 ... Ярастерян ...
Есть идеи, как получить более подробную информацию об этом поведении?
Заранее спасибо, Ральф