您好我有一个名为Nodes的mongoDB Collection,其结构如下:
{
"_id" : new BinData(3, "Ljot2wCBskWG9VobsLA0zQ=="),
"logicalname" : "Test Node",
"host" : "eh5tmb054pc",
"port" : 104,
"appendtimestamp" : false,
"studies" : ["1.3.12.2.1107"],
"tests" : [],
"mainentries" : [{
"_id" : "1.3.12.2.1107",
"Index" : 0,
"Type" : "Study"
}]
}
我创建了一个名为“mainentries”的新密钥,现在存储了“研究”和“测试”。所以为了不费吹灰之力地支持我的新版本,我现在想在我的Setup Helper中编写一个方法,这将使我能够阅读这个集合 - 检查是否存在研究,测试,如果是,请添加关键字“mainentries”并删除研究/测试关键。
我的问题是:我必须使用哪种查询来访问每个节点集合以检查字段并进行更新。我正在使用MongoDB-CSharp社区驱动程序。
感谢任何帮助和指示。
答案 0 :(得分:0)
您只需检查字段是否仍然存在:
var collection = db.GetCollection<Node>("nodes");
var nodes = collection.Find(Query.And( // might want Query.Or instead?
Query<Node>.Exists(p => p.Tests),
Query<Node>.Exists(p => p.Studies)).SetSnapshot();
foreach(var node in nodes) {
// maybe you want to move the Tests and Studies to MainEntries here?
node.MainEntries = new List<MainEntries>();
node.Test = null;
node.Studies = null;
collection.Update(node);
}
如果您不想迁移数据,只是删除字段并创建新字段,您还可以使用$exists
,$set
和{{1}进行简单的批量更新}