mongodb:upserting:仅在插入文档时设置值

Paw*_*lov 20 mongodb

考虑一个简单的mongo文档结构:

{_ id,firstTime,lastTime}

客户端需要插入具有已知ID的文档,或更新现有文档.'lastTime'应始终设置为某个最新时间.对于'firstTime',如果正在插入文档,则应将'firstTime'设置为当前时间.但是,如果已创建文档,则"firstTime"保持不变.我想纯粹用upserts(以避免仰视)来做.

我已经抓取了http://www.mongodb.org/display/DOCS/Updating,但我不知道如何完成特定的操作.

我不相信这是不合理的,有$ push和$ addToSet操作可以在数组字段上有效地执行此操作,只是在简单字段上没有任何相同的操作.这就像应该有$ setIf操作.

dom*_*ard 29

我遇到了完全相同的问题,并没有简单的解决方案<2.4但是因为2.4 $ setOnInsert运算符让你做到了.

db.collection.update( <query>,
                      { $setOnInsert: { "firstTime": <TIMESTAMP> } },
                      { upsert: true }
                    )
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅setOnInsert2.4发行说明.