我想在更新查询中引用找到的文档,以便可以保留文档的历史记录。
说我有一个看起来像这样的对象:
{
"_id": ObjectId("..."),
"foo": "bar",
"baz": "quux"
}
我想将baz
键更新为quuux
,同时将当前修订保留在名为history
的新键中,该键可能看起来像这样:
db.test.update(
{foo: "bar"},
{
$set: {baz: "quuux"},
$push: {
history: {
$each: [ this ],
$slice: 3
}
}
}
)
这种方法很幼稚,因为this
不能解析找到的文档。我想知道这种天真的方法是否有其他可能。
为澄清起见,如果这种方法行得通,我希望新文档看起来像这样:
{
"_id": ObjectId("..."),
"foo": "bar",
"baz": "quuux",
"history": [
{
"_id": ObjectId("..."),
"foo": "bar",
"baz": "quux"
}
]
}