2015-06-06 16 views
6

ilk kez Mongo dışarı çalışıyorum ve ben bir sorun yaşıyorum Yutmalıyım Ben C ismine göre gruplandırıyorum. Yani, örneğin, John Smith, tek A içinde B birkaç olabilir ve ayrıca çalıştırarak birkaç farklı A'larMongoDB C# 2.0 Sürücü Çoklu

Ben Mongo Kabuğu'nda içinde gerçekleştirebilirsiniz arasında B'de olabilir:

db.As.aggregate( 
    {$unwind: "$Bs"}, 
    {$unwind: "$Bs.Cs"}, 
    {$group: { _id: "$Bs.Cs.Name", total: {$sum: "$Bs.Cs.Amount"}}}, 
    {$sort: {total: -1}}, 
    {$limit: 10} 
); 

Ama ben MongoDB 2.0 sürücüsü kullanarak benim C# app içinde bunu nasıl yapılacağını anlayamıyorum. Biri bana doğru yönde işaret edebilir mi?

Ayrıca, bir SQL Server kullanıcısıyım ve çok fazla sprocs kullanıyorum, bu özel toplamı sunucuda depolanmış bir javascript içine koyup sadece C# uygulamasından çağırmalı mıyım? Öyleyse, 2.0 javascript ile kayıtlı javascript'i nasıl ararsınız?

Teşekkürler!

cevap

4

Maalesef tüm MongoDB sorguları LINQ ile yazılabilir. Neyse topaklama yoluyla uygulayabilirsiniz:

var collection = database.GetCollection<A>("As"); 
var result = await collection 
     .Aggregate() 
     .Unwind(x => x.Bs) 
     .Unwind(x => x["Bs.Cs"]) 
     .Group(new BsonDocument {{"_id", "$Bs.Cs.Name"}, {"total", new BsonDocument("$sum", "$Bs.Cs.Amount")}}) 
     .Sort(new BsonDocument("total", -1)) 
     .Limit(10) 
     .ToListAsync(); 
+0

Teşekkürler! Bu hile yaptı! – eraly

İlgili konular