// 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; }
public void TestOrWithAll() { var all = new QueryDocument(); var query = Query.Or(all); var expected = "{ }"; Assert.AreEqual(expected, query.ToJson()); }
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()); }
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; } }
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; }