2017-05-15 57 views
0

現在我有一個實體,一個嵌套的數組如何從MongoDB的使用C#

public class Author { 
    public ObjectId Id { get; set; } 
    public String Name { get; set; } 
    public IEnumerable<Book> Books { get; set; } 
} 

public class Book { 
    public ObjectId Id { get; set; } 
    public String ISBN { get; set; } 
} 

和預先定義的MongoDB集合像

var authors = mongodbDatabase.getCollection<Author>("Authors"); 

檢索嵌套數組元素,這裏的問題,是有辦法從指定的「作者」直接檢索MongoDB中的一個或一些「書」(不是檢索整個「作者」然後LINQ我想要的書)

回答

1

您可以使用Projection如下:

var filter = Builders<Author>.Filter.Eq("Books.ISBN", "987654321"); 
var projection = Builders<Author>.Projection.Include("Books.$").Exclude("_id"); 
var book = context.AuthorCollection.Find(filter).Project(projection).SingleOrDefault(); 

這將返回一個BsonDocument它有書。

+0

感謝您的回覆。從代碼中,是否_Projection.Include()_表示_Project()_方法告訴M​​ongoDB驅動程序僅返回指定的字段? – YankeeYu

+0

是的,正確的。你可以在這裏看到更多的例子:http://mongodb.github.io/mongo-csharp-driver/2.0/reference/driver/definitions/#projections – Mahdi