Mongoose 中的 Mongo BSON 类型
Posted
技术标签:
【中文标题】Mongoose 中的 Mongo BSON 类型【英文标题】:Mongo BSON Types in Mongoose 【发布时间】:2016-07-08 18:45:56 【问题描述】:如何使用 mongoose 使用 Timestamp()
和 mongodb docs 中提到的其他 mongo shell 操作?
如果我执行this 之类的操作,我会收到错误消息:
oplogModel.find(ts: $gte: lastTimestamp, $lt: Timestamp(currTimestam
^
ReferenceError: Timestamp is not defined
【问题讨论】:
***.com/questions/10006218/… 可能重复? 不要更改原始表格中的问题。而是提出一个新问题。 【参考方案1】:像Timestamp
这样的对象在本机驱动程序包中定义。
可以通过调用mongoose.mongo
引用底层节点原生驱动:
var mongoose = require('mongoose'),
Timestamp = mongoose.mongo.Timestamp;
这将允许您设置导入并使用驱动程序中为 BSON 类型定义的函数。
请注意,shell 中的“并非所有”助手都可用。只有那些真正有意义的(例如 BSON 类型定义函数)才能在所有驱动程序中实际可用。
另请注意,在大多数情况下,您确实需要Date
。这将是一个 BSON Date
对象,它实际上只是在内部存储为从纪元值开始的毫秒数。但当然会反序列化为 Date
对象,这将是相关语言最常用的对象。
Timestamp
是一个特例,在两者之间的存储上你并没有真正获得什么。
【讨论】:
var Timestamp = mongoose.mongo.TimeStamp; oplogModel.find(ts: $gte: lastTimestamp, $lt: Timestamp(currTimestam ^ TypeError: undefined is not a function
时间戳未定义。
@Shipra 这是mongoose.mongo.Timestamp
。导入未使用正确的大小写。我的错字。
我可以使用 Date 对象或 epoch 时间戳来与存储在 oplog 中的 BOSON 时间戳进行比较吗?
@Shipra 这不是你问的问题。底线是您要查询的任何 BSON 数据类型,即您必须提供的类型。请注意,当使用 mongoose 时,您可能不应该尝试在集合上设置模式,因为您可能会得到错误的类型。无论如何,这回答了您提出的问题。如果您还有其他问题,那么Ask Another Question
@Shipra 不,你不会。不要改变你的问题。你还有一个问题要问,所以Ask another Question。从你所问的内容中改变你的问题是特别粗鲁和令人困惑的,因为现有的回答将脱离上下文。这不是在这里做得很好的那种行为。如果您想在这里获得良好的体验,请遵守规则。接受您的问题已得到回答,然后继续提出新问题。以上是关于Mongoose 中的 Mongo BSON 类型的主要内容,如果未能解决你的问题,请参考以下文章
Mongo基础使用,以及在Express项目中使用Mongoose
golang mongo-driver filter 构建--bson和golang基础类型
MongoError:在对嵌套文档中的记录进行分组时,无法从缺少的 BSON 类型转换为日期
org.bson.json.JsonParseException:JSON 阅读器期待一个值,但发现 ':' - Springboot 中的 Mongo 查询抛出此错误