Beispiel #1
0
        // GET: api/Incumbent
        public IEnumerable<BsonDocument> Get()
        {
            var svc = new Akron.Data.DataService();
               var queryDoc = new QueryDocument();
               var queryGroup = new GroupDefinition();

               var qb = new QueryBuilder();

               qb.SelectedSlicers.Add(new DimensionDefinition
               {
               Column = new DataColumnMetadata { ColumnName = "Year" },
               IsDefault = true
               });
               qb.SelectedSlicers.Add(new DimensionDefinition
               {
               Column = new DataColumnMetadata { ColumnName = "org_type" }

               });
               qb.SelectedMeasures = new List<MeasureDefinition>
            {
                new MeasureDefinition
                {
                    Column = new DataColumnMetadata {ColumnName = "Base_Pay"},
                    IsDefault = true,
                    Operation = AggregateOperations.Average
                }
            };
               var qd = qb.ToQueryDocument();
               qd.CollectionName = "incumbent";
               qd.DataSource = "hra";
               qd.DataSourceLocation = "mongodb://localhost:27017";
               var result = svc.GetData(qd);
               return result;
        }
        /// <summary>
        /// Tests that all the queries are true (see $and in newer versions of the server).
        /// </summary>
        /// <param name="queries">A list of subqueries.</param>
        /// <returns>An IMongoQuery.</returns>
        public static IMongoQuery And(IEnumerable<IMongoQuery> queries)
        {
            if (queries == null)
            {
                throw new ArgumentNullException("queries");
            }
            if (!queries.Any())
            {
                throw new ArgumentOutOfRangeException("queries", "And cannot be called with zero queries.");
            }

            var queryDocument = new QueryDocument();
            foreach (var query in queries)
            {
                if (query == null)
                {
                    throw new ArgumentOutOfRangeException("queries", "One of the queries is null.");
                }
                foreach (var clause in query.ToBsonDocument())
                {
                    AddAndClause(queryDocument, clause);
                }
            }

            return queryDocument;
        }
Beispiel #3
0
 public void TestOrWithAll()
 {
     var all = new QueryDocument();
     var query = Query.Or(all);
     var expected = "{ }";
     Assert.AreEqual(expected, query.ToJson());
 }
Beispiel #4
0
 public void TestOrWithAllOnLeft()
 {
     var all = new QueryDocument();
     var right = Query<Entity>.EQ(x => x.Name, "John");
     var query = Query.Or(all, right);
     var expected = "{ }";
     Assert.AreEqual(expected, query.ToJson());
 }
Beispiel #5
0
 public void TestAndWithAllOnRight()
 {
     var left = Query<Entity>.EQ(x => x.Name, "John");
     var all = new QueryDocument();
     var query = Query.And(left, all);
     var expected = "{ 'Name' : 'John' }".Replace("'", "\"");
     Assert.AreEqual(expected, query.ToJson());
 }
        protected IMongoQuery WrapQuery(IMongoQuery query, BsonDocument options, ReadPreference readPreference, bool forShardRouter)
        {
            BsonDocument formattedReadPreference = null;
            if (forShardRouter && readPreference != null && readPreference.ReadPreferenceMode != ReadPreferenceMode.Primary)
            {
                BsonArray tagSetsArray = null;
                if (readPreference.TagSets != null)
                {
                    tagSetsArray = new BsonArray();
                    foreach (var tagSet in readPreference.TagSets)
                    {
                        var tagSetDocument = new BsonDocument();
                        foreach (var tag in tagSet)
                        {
                            tagSetDocument.Add(tag.Name, tag.Value);
                        }
                        tagSetsArray.Add(tagSetDocument);
                    }
                }

                if (tagSetsArray != null || readPreference.ReadPreferenceMode != ReadPreferenceMode.SecondaryPreferred)
                {
                    formattedReadPreference = new BsonDocument
                    {
                        { "mode", MongoUtils.ToCamelCase(readPreference.ReadPreferenceMode.ToString()) },
                        { "tags", tagSetsArray, tagSetsArray != null } // optional
                    };
                }
            }

            if (options == null && formattedReadPreference == null)
            {
                return query;
            }
            else
            {
                var queryDocument = (query == null) ? (BsonValue)new BsonDocument() : BsonDocumentWrapper.Create(query);
                var wrappedQuery = new QueryDocument
                {
                    { "$query", queryDocument },
                    { "$readPreference", formattedReadPreference, formattedReadPreference != null }, // only if sending query to a mongos
                };
                if (options != null)
                {
                    wrappedQuery.Merge(options);
                }
                return wrappedQuery;
            }
        }
Beispiel #7
0
        private async Task DoWork(IMongoCollection<BsonDocument> collection)
        {
            var rand = new Random();
            while (!_cancellationTokenSource.IsCancellationRequested)
            {
                var i = rand.Next(0, 10000);
                List<BsonDocument> docs;
                try
                {
                    docs = await collection.Find(new BsonDocument("i", i))
                        .ToListAsync(_cancellationTokenSource.Token);
                }
                catch
                {
                    Console.Write("+");
                    continue;
                }

                if (docs.Count == 0)
                {
                    try
                    {
                        await collection.InsertOneAsync(new BsonDocument("i", i), _cancellationTokenSource.Token);
                    }
                    catch
                    {
                        Console.Write("*");
                    }
                }
                else
                {
                    try
                    {
                        var filter = new QueryDocument("_id", docs[0]["_id"]);
                        var update = new UpdateDocument("$set", new BsonDocument("i", i + 1));
                        await collection.UpdateOneAsync(filter, update, cancellationToken: _cancellationTokenSource.Token);
                        //Console.Write(".");
                    }
                    catch (Exception)
                    {
                        Console.Write("*");
                    }
                }
            }
        }
 private IMongoQuery BuildNotQuery(UnaryExpression unaryExpression)
 {
     var queryDocument = new QueryDocument(BuildQuery(unaryExpression.Operand).ToBsonDocument());
     return Query.Not(queryDocument);
 }
 /// <summary>
 /// 查询MongoDB
 /// </summary>
 /// <param name="collenction">集合名称</param>
 /// <param name="qd">QueryCocument条件</param>
 /// <returns>返回结果</returns>
 public static MongoCursor QueryMongoCollection(string collenction, QueryDocument qd)
 {
     MongoCursor<BsonDocument> result = null;
     var connectionString = "mongodb://localhost";
     var client = new MongoClient(connectionString);
     var server = client.GetServer();
     var database = server.GetDatabase("test"); // WriteConcern defaulted to Acknowledged
     MongoCollection col = database.GetCollection(collenction);
     try
     {
         //查找全部
         //result = col.FindAllAs<BsonDocument>();
         //条件查找
         result = col.FindOneAs<MongoCursor<BsonDocument>>(qd);
     }
     catch (Exception ex)
     {
         CommonFunction.WriteErrorLog(ex.ToString());
     }
     return result;
 }