我已經建造測試您的問題:
這裏是文檔,我保存到MongoDB中(與3級陣列深):
{
"_id": "4dfa48d1872b4a1a50f60033",
"NestedLevels": [
{
"Name": "Nested1",
"NestedLevels": [
{
"Name": "Nested2",
"NestedLevels": [
{
"Name": "Nested3",
"NestedLevels": []
}
]
}
]
}
]
}
我從加載它c#,更新名稱=嵌套3與另一個值,並保存回來,之後,我正在閱讀從mongodb更新文件,它實際更新。所以我想你的其他部分代碼的問題。
順便說一句:如果你需要我可以在這裏發佈完整的測試在C#中。
更新:
測試用例:
[TestMethod]
public void MongodbTest()
{
var mongoServer = MongoServer.Create("mongodb://localhost:27020");
var database = mongoServer.GetDatabase("StackoverflowExamples");
var levels = database.GetCollection("levels");
var level1 = new Level1();
var nested1 = new LevelX() { Name = "Nested1" };
var nested2 = new LevelX() { Name = "Nested2" };
nested1.NestedLevels.Add(nested2);
var nested3 = new LevelX() { Name = "Nested3" };
nested2.NestedLevels.Add(nested3);
level1.NestedLevels.Add(nested1);
levels.Insert(level1);
var item = levels.FindOneAs<Level1>();
item.NestedLevels[0].NestedLevels[0].NestedLevels[0].Name =
"Changed nested level 3 name";
levels.Save(item);
var itemAfterUpdate = levels.FindOneAs<Level1>();
Assert.AreEqual("Changed nested level 3 name",
itemAfterUpdate.NestedLevels[0].NestedLevels[0].NestedLevels[0].Name);
levels.RemoveAll();
}
文件類:
public class Level1
{
public Level1()
{
Id = ObjectId.GenerateNewId();
NestedLevels = new List<LevelX>();
}
[BsonId]
public Object Id { get; set; }
public List<LevelX> NestedLevels { get; set; }
}
public class LevelX
{
public LevelX()
{
NestedLevels = new List<LevelX>();
}
public string Name { get; set; }
public List<LevelX> NestedLevels { get; set; }
}
您可以發佈完整的代碼,用文檔類和更新的一部分?我想和你一起嘗試。 – 2011-06-16 21:00:09