MongoDB.Driver.Builders.DeprecatedQuery.Or C# (CSharp) Method

Or() public static method

Tests that at least one of the subqueries is true (see $or).
public static Or ( ) : QueryComplete
return QueryComplete
        public static QueryComplete Or(params IMongoQuery[] queries)
        {
            if (queries == null)
            {
                throw new ArgumentNullException("queries");
            }
            if (queries.Length == 0)
            {
                throw new ArgumentOutOfRangeException("queries", "Query.Or cannot be called with zero queries.");
            }

            var queryArray = new BsonArray();
            foreach (var query in queries)
            {
                if (query == null)
                {
                    throw new ArgumentOutOfRangeException("queries", "One of the queries is null.");
                }
                // flatten out nested $or
                var queryDocument = query.ToBsonDocument();
                if (queryDocument.ElementCount == 1 && queryDocument.GetElement(0).Name == "$or")
                {
                    foreach (var nestedQuery in queryDocument[0].AsBsonArray)
                    {
                        queryArray.Add(nestedQuery);
                    }
                }
                else
                {
                    // skip query like { } which matches everything
                    if (queryDocument.ElementCount != 0)
                    {
                        queryArray.Add(queryDocument);
                    }
                }
            }

            switch (queryArray.Count)
            {
                case 0:
                    return new QueryComplete(new QueryDocument()); // all queries were empty queries so just return an empty query
                case 1:
                    return new QueryComplete(queryArray[0].AsBsonDocument);
                default:
                    return new QueryComplete(new BsonDocument("$or", queryArray));
            }
        }

Usage Example

        public void TestOrWithEmptyQuery()
        {
            var emptyQuery = new QueryDocument();

            var query    = Query.Or(emptyQuery);
            var expected = "{ }";

            Assert.AreEqual(expected, query.ToJson());

            query    = Query.Or(emptyQuery, emptyQuery);
            expected = "{ }";
            Assert.AreEqual(expected, query.ToJson());

            query    = Query.Or(emptyQuery, Query.EQ("x", 1));
            expected = "{ \"x\" : 1 }";
            Assert.AreEqual(expected, query.ToJson());

            query    = Query.Or(Query.EQ("x", 1), emptyQuery);
            expected = "{ \"x\" : 1 }";
            Assert.AreEqual(expected, query.ToJson());

            query    = Query.Or(emptyQuery, Query.EQ("x", 1), emptyQuery);
            expected = "{ \"x\" : 1 }";
            Assert.AreEqual(expected, query.ToJson());

            query    = Query.Or(Query.EQ("x", 1), emptyQuery, Query.EQ("y", 2));
            expected = "{ \"$or\" : [{ \"x\" : 1 }, { \"y\" : 2 }] }";
            Assert.AreEqual(expected, query.ToJson());
        }
All Usage Examples Of MongoDB.Driver.Builders.DeprecatedQuery::Or