MongoDB C# - 如何执行以下操作
如何使用MongoDB和.NET的C#驱动程序执行以下操作。MongoDB C# - 如何执行以下操作
说我有以下的集合(忽略是否有语法错误):
{_id: "2312321321sdd", "Ticker": "AAPL", "CompanyName" : "APPLE", "Viewed": "2013-05-13"}
{_id: "2312321321sde", "Ticker": "AAPL", "CompanyName" : "APPLE", "Viewed": "2013-05-12"}
{_id: "2312321321sdf", "Ticker": "GOOG", "CompanyName" : "GOOGLE", "Viewed": "2013-05-12"}
{_id: "2312321321sdg", "Ticker": "MSFT", "CompanyName" : "MICROSOFT", "Viewed": "2013-05-12"}
{_id: "2312321321sdh", "Ticker": "MSFT", "CompanyName" : "MICROSOFT", "Viewed": "2013-05-11"}
使用C#和/或LINQ与MongoDB的驱动程序,我该如何获得最新的3浏览过的商品,但也DISTINCT作为好吧,所以同一个TICKER没有双重的起伏。因此,最好在下面将得到恢复:提前
{_id: "2312321321sdd", "Ticker": "AAPL", "CompanyName" : "APPLE", "Viewed": "2013-05-13"}
{_id: "2312321321sdf", "Ticker": "GOOG", "CompanyName" : "GOOGLE", "Viewed": "2013-05-12"}
{_id: "2312321321sdg", "Ticker": "MSFT", "CompanyName" : "MICROSOFT", "Viewed": "2013-05-12"}
感谢....
我不能说这一点无论使用LINQ甚至很多C#,但它是你在MongoDB中C#之后是什么就像今天一样。不幸的是,Collection.AsQueryable()
不会让你走得更远。
聚合框架或MapReduce是要走的路。一组不同的代码需要适度,但这里是AF:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
MongoCollection<Tick> coll =
new MongoClient("mongodb://11.11.11.11/test").GetServer()
.GetDatabase("test")
.GetCollection<Tick>("tix");
var group = new BsonDocument
{
{
"$group",
new BsonDocument
{
{
"_id", "$CompanyName"
},
{
"LastViewed", new BsonDocument
{
{
"$max", "$Viewed"
}
}
}
}
}
};
foreach (
var t in
coll.Aggregate(group,
new BsonDocument("$sort", new BsonDocument("LastViewed", -1)),
new BsonDocument("$limit", 3))
.ResultDocuments)
{
Console.WriteLine("{0} last viewed {1}", t["_id"], t["LastViewed"]);
}
}
public class Tick
{
public string Id { get; set; }
public string Ticker { get; set; }
public string CompanyName { get; set; }
public string Viewed { get; set; }
}
}
谢谢Nik .... ....作品...这是有效的吗? – 2013-05-13 05:03:46
@MrJones,不能说,但它是服务器端,你不会有50k代理问题;我会把一个降序的索引放在了视图上(这与我在上面做的不一样,应该是一个实际的'$ date');我也会索引公司名称,因为你可能负担得起;不幸的是,我不知道如何确保AF的操作只是索引,但为此拍摄并检查配置文件dbs,以防他们_将告诉 – 2013-05-13 17:50:25
也许地图减少查询您在地图上的地图,你的减少步骤是返回实体与最新的观看。 – 2013-05-13 02:42:23
也许是这样的http://stackoverflow.com/questions/12785550/mongo-mapreduce-select-latest-date – 2013-05-13 02:43:55