CSharp · Console
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();*/
}
}
}