我正在努力处理mongodb,mongoose,mongoose-double和一些对创建数据的查找查询。
环境:
我使用https://www.npmjs.com/package/mongoose-double是因为我实际上使用猫鼬4.13.x,而新的@ mongoosejs / double版本需要猫鼬5.x
使用mongoose-double dataType将一些数据插入MongoDB模式(使用嵌入式文档-但我不认为这是问题)之后,无法通过简单的查询找到相关数据。
嵌入式架构如下:
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]
}
通过猫鼬插入一些具有指数值的数据后,例如: 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 打开文档,然后单击“编辑”->“ 保存”(没有做任何更改),查询将起作用,并且将找到文档。
集合 foo 和文档看起来相同-并且 var 字段仍然是double类型...我很困惑...
关于如何获取有关此行为的更多详细信息的任何想法?
预先感谢 拉尔夫
答案 0 :(得分:0)
正如精打细算的指出的那样……robomongo对我的数据做了一些小的“调整”……并且用robomongo显示的数据进行的搜索直到将这个“错误的”显示数据保存到mongodb才成功运行。
我通过以下方式在mongodb上打开了一些查询记录
db.setProfilingLevel(2)
db.system.profile.find().pretty()
检查保存的内容以及查询的外观。那给了我最后的提示。
为我解决了-谢谢!