通过mongoose-double插入数据后,找不到文档

时间:2018-09-17 11:07:04

标签: mongodb mongoose

我正在努力处理mongodb,mongoose,mongoose-double和一些对创建数据的查找查询。

环境:

  • MongoDB:3.6
  • 猫鼬:4.13
  • 猫鼬双:0.0.1

我使用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类型...我很困惑...

关于如何获取有关此行为的更多详细信息的任何想法?

预先感谢 拉尔夫

1 个答案:

答案 0 :(得分:0)

正如精打细算的指出的那样……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()

检查保存的内容以及查询的外观。那给了我最后的提示。

为我解决了-谢谢!