是否可以使用 检测我是在处理新记录还是旧记录mgo
?
我的意思的一个例子是在 Rails ActiveRecord 中实现的:
object.new_record?
mgo 没有新/旧记录的概念。就驱动程序而言,它只是您在内存中的数据。您可以从数据库中加载一个内存值、多个内存值中的数据,并且可以将其保存回相同的 id 或不同的 id 下,甚至可以将其保存到完全不同的数据库中不同的会话。司机只会做被要求做的事情。
应用程序可以通过向结构添加字段并根据需要进行设置来实现自己的新/旧概念。使该字段不导出或使用字段标签bson:"-"
来防止 mgo 存储该字段。
如果应用程序总是依赖数据库来分配文档 id,那么应用程序可以检查 id 字段来确定文档是新的还是旧的。
显然不是。
查看 mgo 的代码,与文档相比,我没有看到任何 " *saved*
" 函数ActiveRecord::Persistence.new_record?
:
如果此对象尚未保存,则返回 true - 也就是说,数据存储中尚不存在该对象的记录;否则,返回 false。
我看到mgo
:
C:\Users\vonc\prog\git\mgo>gi saved
gridfs.go:360:// SetChunkSize sets size of saved chunks. Once the file is written to, it
gridfs.go:361:// will be split in blocks of that size and each block saved into an
txn/txn.go:360:// Saved documents are in the format:
并且寻找 anyIsXxxx()
不会产生任何相关的东西(主要是IsMaster
or IsDup
)