0
我一直在向現有文檔中添加一個新字段。在MongoDB文檔中添加一個新字段
以下是我的程序AddNewField用於測試目的。
之後的代碼,你可以看到我的集合有兩個文件:第一個是更新前,第二個是更新後。
第一個(Update之前)是包含所有字段的原始文檔。 最後(後更新)僅具有「_id」字段和「new_field」
最後但並非最不重要的,我注意到,雖然第一文檔具有「_id」:物件(「509a2d81f10a00000000000a」) 最後文件有「_id」:「509a2d81f10a00000000000a」
我想使用特殊更新操作符$設置。
我在做什麼錯了?
procedure AddNewField(const aGfs: TGridFS; const aGfsName: string);
var
command: IBson;
bb: IBsonBuffer;
query: IBson;
gf: IGridfile;
OID: string;
begin
gf := aGfs.find(aGfsName, False);
OID := gf.getID().AsString;
query := BSON(['_id', OID]);
bb := NewBsonBuffer;
bb.startObject(PAnsiChar('$set'));
bb.AppendStr(PAnsiChar('new_field'), PAnsiChar('The Boss wins!'));
bb.finishObject;
command := bb.finish;
FMongo.update('fsdb.fs.files', query, command, updateUpsert);
end;
,來電後FMongo.Update我收藏有現在兩個文件!
/* Before Update */
{
"_id" : ObjectId("509a2d81f10a00000000000a"),
"filename" : "Test Document.pdf",
"length" : NumberLong(7855753),
"chunkSize" : 262144,
"uploadDate" : ISODate("2012-11-07T09:44:33Z"),
"md5" : "e803de3a59bf7098bb419e005162e950",
"flags" : 0
}
/* After Update */
{
"_id" : "509a2d81f10a00000000000a",
"new_field" : "The Boss wins!"
}