.Net Mongo驱动程序 - 获取没有查找路径的对象?

时间:2017-03-05 17:54:02

标签: c# .net mongodb

我有一个像这样设置的MongoDB -

product-data
   1234-abcd
       items
           9012-uiop
               name
               price
   5678-efgh

我知道我想要的产品的完整路径 -

product-data.1234-abcd.items.9012-uiop

我希望在不解析整个对象的情况下检索此嵌套对象,而不使用find。我尝试了一些事情 -

_database.GetCollection<ProductData>("product-data").Find("1234-abcd.items.9012-uiop"); // Thinks the result of Find is ProductData
_database.GetCollection<ProductItem>("product-data.1234-abcd.items.9012-uiop"); // Thinks the result is a collection (naturally)

我想过将第二个对象序列化为json,然后将其反序列化为我期望的类,但这看起来像是一个黑客。

给定完整路径,如何使用.Net Mongo驱动程序以这种方式解析嵌套对象?

1 个答案:

答案 0 :(得分:0)

我无法理解,你的数据结构是什么,我假设你有ProductData字符串Id和ProductItem insisde列表。

如果要从集合中获取数据,则应调用Find()。但是如果您只想从中获取某个项目,则可以将查询结果投影到仅获得它:

ProductItem item = _database.GetCollection<ProductData>("product-data")
                            .Find(x=>x.Id=="1234-abcd")
                            .Project(x=>x.items.First(i=>i.name=="9012-uiop"))
                            .First();