MongoKitten 支持 $inc 修饰符
MongoKitten support for $inc modifier
我想通过 Vapor 和 MongoKitten 更新 MongoDB 中的自动递增字段。不一定是唯一键。
目标是使用 $inc 修饰符使其成为单个原子操作并一次性获得返回的递增结果。
MongoKitten 是否支持此操作?
我能做到吗?通过使用 findAndUpdate 方法?
如果是,这的示例语法是什么?
借助 MongoKitten,您可以使用 Collection 上的 findAndUpdate
函数来执行此操作。输入应该是一个查询(除非你想增加集合中的所有实体)和更新文档的 with
参数。
// The query used to find the document to increment
let query: Query = "_id" == ...
在更新文档中,您可以像这样使用$inc operator:
let updateDoc: Document = ["$inc": ["myKey": 1]]
这将通过将 "myKey" 递增 1
来更新它
let updated = try collection.findAndUpdate(query, with: updateDoc)
updated
文档将包含文档 before 更新,因此如果 myKey
的值为 3。它将在更新后增加到 4此查询,但您将收到值为 3
.
的文档
要更改此设置,您可以更改 returnedDocument
参数(默认为 .old
)
let updated = try collection.findAndUpdate(query, with: updateDoc, returnedDocument: .new)
最后,如果您关心优化或只是发现通常会限制返回结果,则应考虑添加投影。 Projections 向数据库表明您对哪些字段不感兴趣。
您可以将它与 findAndUpdate
一起使用,以确保只返回相关字段,即本例中的 myKey
整数值。
let updated = try collection.findAndUpdate(query, with: updateDoc, returnedDocument: .new)
我想通过 Vapor 和 MongoKitten 更新 MongoDB 中的自动递增字段。不一定是唯一键。
目标是使用 $inc 修饰符使其成为单个原子操作并一次性获得返回的递增结果。
MongoKitten 是否支持此操作?
我能做到吗?通过使用 findAndUpdate 方法?
如果是,这的示例语法是什么?
借助 MongoKitten,您可以使用 Collection 上的 findAndUpdate
函数来执行此操作。输入应该是一个查询(除非你想增加集合中的所有实体)和更新文档的 with
参数。
// The query used to find the document to increment
let query: Query = "_id" == ...
在更新文档中,您可以像这样使用$inc operator:
let updateDoc: Document = ["$inc": ["myKey": 1]]
这将通过将 "myKey" 递增 1
来更新它let updated = try collection.findAndUpdate(query, with: updateDoc)
updated
文档将包含文档 before 更新,因此如果 myKey
的值为 3。它将在更新后增加到 4此查询,但您将收到值为 3
.
要更改此设置,您可以更改 returnedDocument
参数(默认为 .old
)
let updated = try collection.findAndUpdate(query, with: updateDoc, returnedDocument: .new)
最后,如果您关心优化或只是发现通常会限制返回结果,则应考虑添加投影。 Projections 向数据库表明您对哪些字段不感兴趣。
您可以将它与 findAndUpdate
一起使用,以确保只返回相关字段,即本例中的 myKey
整数值。
let updated = try collection.findAndUpdate(query, with: updateDoc, returnedDocument: .new)