private QueryComplete VisitInner(IExpression expression) { MongoDBVisitor visitor = new MongoDBVisitor(); visitor.Visite(expression); //combine the order expressions. this.OrderFields.AddRange(visitor.OrderFields); this.CategoryQueries = this.CategoryQueries.Concat(visitor.CategoryQueries); return(visitor.QueryComplete); }
private IMongoQuery VisitInner(IExpression expression) { MongoDBVisitor visitor = new MongoDBVisitor(); visitor.Visite(expression); //combine the order expressions. this.OrderFields.AddRange(visitor.OrderFields); this.CategoryQueries = this.CategoryQueries.Concat(visitor.CategoryQueries); return visitor.MongoQuery; }
public virtual object Execute() { var visitor = new MongoDBVisitor(); visitor.Visite(ContentQuery.Expression); var mongoCursor = Query(visitor); if (mongoCursor == null) { return(DefaultValueExecute(visitor.CallType)); } if (visitor.Skip != 0) { mongoCursor.Skip = visitor.Skip; } SortByBuilder sortBuilder = new SortByBuilder(); foreach (var item in visitor.OrderFields) { if (item.Descending) { sortBuilder.Descending(item.FieldName); } else { sortBuilder.Ascending(item.FieldName); } } mongoCursor = mongoCursor.SetSortOrder(sortBuilder); object result = null; switch (visitor.CallType) { case Kooboo.CMS.Content.Query.Expressions.CallType.Count: result = Convert.ToInt32(mongoCursor.Count()); break; case Kooboo.CMS.Content.Query.Expressions.CallType.First: result = mongoCursor.First().ToContent(); break; case Kooboo.CMS.Content.Query.Expressions.CallType.Last: result = mongoCursor.Last().ToContent(); break; case Kooboo.CMS.Content.Query.Expressions.CallType.LastOrDefault: result = mongoCursor.Last().ToContent(); break; case Kooboo.CMS.Content.Query.Expressions.CallType.FirstOrDefault: result = mongoCursor.FirstOrDefault().ToContent(); break; case Kooboo.CMS.Content.Query.Expressions.CallType.Unspecified: default: if (visitor.Take != 0) { result = mongoCursor.Take(visitor.Take).Select(it => it.ToContent()); } else { result = mongoCursor.Select(it => it.ToContent()); } break; } if (mongoCursor.Database.Server.State != MongoServerState.Disconnected) { mongoCursor.Database.Server.Disconnect(); } return(result); }
public virtual object Execute() { var visitor = new MongoDBVisitor(); visitor.Visite(ContentQuery.Expression); var mongoCursor = Query(visitor); if (mongoCursor == null) { return DefaultValueExecute(visitor.CallType); } if (visitor.Skip != 0) { mongoCursor.Skip = visitor.Skip; } SortByBuilder sortBuilder = new SortByBuilder(); foreach (var item in visitor.OrderFields) { if (item.Descending) { sortBuilder.Descending(item.FieldName); } else { sortBuilder.Ascending(item.FieldName); } } mongoCursor = mongoCursor.SetSortOrder(sortBuilder); object result = null; switch (visitor.CallType) { case Kooboo.CMS.Content.Query.Expressions.CallType.Count: result = Convert.ToInt32(mongoCursor.Count()); break; case Kooboo.CMS.Content.Query.Expressions.CallType.First: result = mongoCursor.First().ToContent(); break; case Kooboo.CMS.Content.Query.Expressions.CallType.Last: result = mongoCursor.Last().ToContent(); break; case Kooboo.CMS.Content.Query.Expressions.CallType.LastOrDefault: result = mongoCursor.Last().ToContent(); break; case Kooboo.CMS.Content.Query.Expressions.CallType.FirstOrDefault: result = mongoCursor.FirstOrDefault().ToContent(); break; case Kooboo.CMS.Content.Query.Expressions.CallType.Unspecified: default: if (visitor.Take != 0) { result = mongoCursor.Take(visitor.Take).Select(it => it.ToContent()); } else result = mongoCursor.Select(it => it.ToContent()); break; } //if (mongoCursor.Database.Server.State != MongoServerState.Disconnected) //{ // mongoCursor.Database.Server.Disconnect(); //} return result; }