using System.Collections.Generic;
using MongoDB.Bson.Serialization;
using MongoDB.Driver.Linq;
public virtual int Id { get; set; }
public virtual List<OrderItem> Items { get; set; }
Items = new List<OrderItem>();
public virtual int Id { get; set; }
public virtual int GoodId { get; set; }
public virtual int Amount { get; set; }
static void Main(string[] args)
var client = new MongoClient("mongodb://localhost/test");
var db = client.GetDatabase("test");
BsonClassMap.RegisterClassMap<Order>(m =>
m.MapIdProperty(x => x.Id);
m.MapProperty(x => x.Items);
BsonClassMap.RegisterClassMap<OrderItem>(m =>
m.MapIdProperty(x => x.Id);
m.MapProperty(x => x.GoodId);
m.MapProperty(x => x.Amount);
.GetCollection<Order>("orders")
Items = new List<OrderItem>
new OrderItem{GoodId = 1, Amount = 1},
new OrderItem{GoodId = 2, Amount = 10},
new OrderItem{GoodId = 3, Amount = 20},
new OrderItem{GoodId = 4, Amount = 30},
new OrderItem{GoodId = 5, Amount = 40}
.GetCollection<Order>("order").AsQueryable()
.Where(x => x.Items.Select(e => e.GoodId).Contains(2))