.NET Fiddle

CSharp · Console

/Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using MongoDB.Bson.Serialization;
using MongoDB.Driver;
using MongoDB.Driver.Linq;

namespace ConsoleApp1
{
	class Order
	{
		public virtual int Id { get; set; }
		public virtual List<OrderItem>  Items { get; set; }

		public Order()
		{
			Items = new List<OrderItem>();
		}
	}
	
	class OrderItem
	{
		public virtual int Id { get; set; }
		public virtual int GoodId { get; set; }
		public virtual int Amount { get; set; }
	}

	class Program
	{
		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);
			});
			
			db
				.GetCollection<Order>("orders")
				.InsertOne(
				new Order
				{
			 		Id = 1,
			 		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}
			        }
				});

			var orders = db
				.GetCollection<Order>("order").AsQueryable()
				.Where(x => x.Items.Select(e => e.GoodId).Contains(2))
				.ToArray();
			
			/*orders = db
				.GetCollection<Order>("order").AsQueryable()
				.Where(x => x.Items.Select(e => e.GoodId).Any(e => e == 2))
				.ToArray();*/			
		}
	}
}
;