0
我有一個文件是這樣的:查詢/查找返回JSON對象在BsonDocument
{ "File" : "xxxxxxx.txt",
"Content" : [
{ "tag" : "Book",
"name" : "TestBook1",
"value" : "xxx"
},
{ "tag" : "Dept",
"name" : "TestDept1",
"value" : "yyy"
},
{ "tag" : "Employee",
"name" : "TestEmployee1",
"value" : "zzz"
}]
}
我可以用查找文檔:
var filter = Builders<BsonDocument>.Filter.Eq("Content.tag", "Dept");
var result = collection.Find(filter).ToList();
然而,這將返回整個文檔。有沒有什麼辦法可以獲得JSON對象({"tag" : "Dept", "name" : "TestDept1"}
)?
我想要得到的只是「價值」屬性(在這種情況下,它是「yyy」),而不是整個文檔。
UPDATE:
像Phani的建議,我是能夠使用下面的代碼這項工作:
var subFilter = Builders<BsonDocument>.Filter.Eq("tag", "Dept");
var filter = Builders<BsonDocument>.Filter.ElemMatch("Content", subFilter);
var result =
collection.Find(filter)
.Project(Builders<BsonDocument>.Projection.Exclude("_id").Include("Content.$"))
.ToList();
Phani,謝謝你的回覆。不幸的是,我的JSON無法使用POCO類,因爲Content中的對象結構是動態的。爲了簡單起見,我使用了一個修復結構。有沒有辦法在LINQ中使用POCO類來完成這項工作? – notlkk
Phani,我能夠使用.Project,就像您在Filter中結合使用的建議一樣,只包含Content對象。但是,這將返回整個內容對象。有沒有辦法進一步過濾結果,所以它只包含內容中的Dept部分? – notlkk
Phani,再次感謝您的回覆。我想我明白了。我會更新我的帖子並接受你的回答。 – notlkk