using MongoDB; using MongoDB.Bson; using MongoDB.Driver; using Sitecore; using Sitecore.Analytics; using Sitecore.Analytics.Data; using Sitecore.Configuration; using Sitecore.Diagnostics; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Linq; using System.Threading.Tasks; namespace DMS.POC.layouts.POC.Sublayouts.Content { public partial class PageEventReport : System.Web.UI.UserControl { private static readonly string _connectionString = "Server=127.0.0.1"; private static readonly string _dbName = "Jetstream81analytics"; public class EventItem { public Guid ItemId { get; set; } public string Data { get; set; } public string DataKeys { get; set; } public long startDateTime { get; set; } } /*"_id", "GeoData.BusinessName", "LocationId", "Value", "GeoData.Country", "StartDateTime", "ContactVisitIndex", "ContactId"*/ public class Interactions { public Guid _id { get; set; } public string Language { get; set; } public int TrafficType { get; set; } public DateTime StartDateTime { get; set; } public DateTime EndDateTime { get; set; } public int VisitPageCount { get; set; } public Pages[] Pages { get; set; } } public class Pages { public Item Item { get; set; } public PageEvents[] PageEvents { get; set; } } public class Item { public Guid _id { get; set; } public string Language { get; set; } } public class PageEvents { public Guid ItemId { get; set; } public string Data { get; set; } public string DataKey { get; set; } public Guid PageEventDefintionId { get; set; } public DateTime DateTime { get; set; } } protected void Page_Load(object sender, EventArgs e) { // InitialData(); GetList(); } public List GetList() { using (Mongo mongo = new Mongo(_connectionString)) { mongo.Connect(); var db = mongo.GetDatabase(_dbName); var collection = db.GetCollection("Interactions"); //var collection = _database.GetCollection("restaurants"); var builder = Builders.Filter; var filter = builder.Eq("Pages.PageEvents.Name", "POC"); // var filter = builder.Eq("_t", "VisitData"); // var filter = Builders.Filter.Eq("Pages.PageEvents.PageEventDefinitoinId", "5de3f816-809d-47fd-a985-fb3814cb9fbb"); var result = collection.Find(filter); var total = result.Documents.Count(); // 先创建一个查询 var query = from iteration in collection.Linq() select iteration; foreach (Interactions item in query) { var field1 = item.Pages; } var results = query.Take(5); return results.ToList(); } } private void InitialData() { if (!Tracker.IsActive) { Tracker.Initialize(); Tracker.StartTracking(); } var definitionId = new Guid("{5DE3F816-809D-47FD-A985-FB3814CB9FBB}"); Assert.IsNotNull(Tracker.Current, "Tracker.Current"); Assert.IsNotNull(Tracker.Current.Session, "Tracker.Current.Session"); var interation = Sitecore.Analytics.Tracker.Current.Session.Interaction; Assert.IsNotNull(interation, "Tracker.Current.Interaction.Current.Session.Interaction"); Assert.IsNotNull(interation.CurrentPage, "Tracker.Current.Interaction.Current.Session.Interaction.CurrentPage"); // var list = interation.CurrentPage.PageEvents.All(ps => ps.PageEventDefinitionId == definitionId and ps.tim); //var list = interation.CurrentPage.PageEvents.Select(ps => ps.PageEventDefinitionId == definitionId // && ps.Timestamp > DateTime.Now.AddDays(-1)); var source = interation.CurrentPage.PageEvents.OrderByDescending ( ps => ps.Timestamp ).Take(10); var results = new List(); foreach (Sitecore.Analytics.Model.PageEventData item in source) { results.Add( new EventItem { ItemId = item.ItemId, Data = item.Data, DataKeys = item.DataKey, startDateTime = item.Timestamp } ); } rptTable.DataSource = results; rptTable.DataBind(); } protected void rptTable_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { EventItem item = (EventItem)e.Item.DataItem; if (item != null) { Literal ltlItemId = (Literal)e.Item.FindControl("ltlItemId"); Literal ltlData = (Literal)e.Item.FindControl("ltlData"); Literal ltlDataKeys = (Literal)e.Item.FindControl("ltlDataKeys"); Literal ltlDateTime = (Literal)e.Item.FindControl("ltlDateTime"); ltlItemId.Text = item.ItemId.ToString(); ltlData.Text = item.Data; ltlDataKeys.Text = item.DataKeys; ltlDateTime.Text = item.startDateTime.ToString(); } } } } }