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!"
}