         return self.queryDocument
     }
 
+    /// Initializes an empty query, matching nothing
+    public init() {
+        self.aqt = .nothing
+    }
 
     /// Creates a Query from a Dictionary Literal
     public init(dictionaryLiteral elements: (String, BSON.Primitive?)...) {
-        self.aqt = .exactly(Document(dictionaryElements: elements))
+        if elements.count == 0 {
+            self.aqt = .nothing
+        } else {
+            self.aqt = .exactly(Document(dictionaryElements: elements))
+        }
     }
     
     /// The `Document` that can be sent to the MongoDB Server as a query/filter

    
    /// Initializes a Query from a Document and uses this Document as the Query
    public init(_ document: Document) {
        self.aqt = .exactly(document)
    }
    
    /// Creates a textSearch for a specified string

    let lhs = lhs.aqt
    let rhs = rhs.aqt
    
    switch (lhs, rhs) {
    case (.and(var a), .and(let b)):
        a.append(contentsOf: b)
        return Query(aqt: .and(a))
    case (.nothing, let query), (let query, .nothing):
        return Query(aqt: query)
    case (.and(var a), let other), (let other, .and(var a)):
        a.append(other)
        return Query(aqt: .and(a))
    default:
        return Query(aqt: .and([lhs, rhs]))
    }
}
