如何在猫鼬中获取 NumberLong 记录

Posted

技术标签:

【中文标题】如何在猫鼬中获取 NumberLong 记录【英文标题】:How to fetch NumberLong record in mongoose 【发布时间】:2017-07-15 10:29:54 【问题描述】:

我的文档中有一个字段为

 "p_id" : NumberLong(2328703838)

我尝试如下获取它

spec.find(p_id: id)

我的 id 是 2328703838...但即使存在数据我也无法获取记录。谁能提供帮助。谢谢。

【问题讨论】:

【参考方案1】:

您必须使用 mongoose-long 才能在 mongoose 中获得 Number Long 支持。

将您的数据类型定义为 SchemaTypes.Long 并使用 Long.fromString("2328703838") 创建一个 Long 对象:

var mongoose = require('mongoose')
require('mongoose-long')(mongoose);

var SchemaTypes = mongoose.Schema.Types;
var Long = mongoose.Types.Long;

var SpecSchema = new mongoose.Schema(
    p_id: SchemaTypes.Long
);

var Spec = mongoose.model('Spec', SpecSchema);

var db = mongoose.connect('localhost', 'testDB');

var id = Long.fromString("2328703838");

Spec.find( p_id: id , function(err, res) 
    if (err) 
        console.log(err);
        return;
    
    console.log(res);
);

【讨论】:

我真的不明白他们为什么要为每个数据类型创建一个单独的 npm 包 NumberIntNumberLong 是 MongoDB 内置支持的类型,为什么不在 mongoose 中支持它们呢? 如何在 es6 中使用 mongoose-long 插件?

以上是关于如何在猫鼬中获取 NumberLong 记录的主要内容,如果未能解决你的问题,请参考以下文章

在猫鼬中,如何根据相关集合中的值查找记录?

如何仅在猫鼬中获取子文档?

如何仅在猫鼬中获取子文档?

如何在猫鼬中从活动收集中获取照片收集数据?

在猫鼬中追加子记录

如何在猫鼬中填充模型