         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

    let lhs = lhs.aqt
    let rhs = rhs.aqt
    
    if case .and(var  a) = lhs, case .and(let b) = rhs {
        a.append(contentsOf: b)
        return Query(aqt: .and(a))
    } else if case .and(var a) = lhs {
        a.append(rhs)
        return Query(aqt: .and(a))
    } else if case .and(var b) = rhs {
        b.append(lhs)
        return Query(aqt: .and(b))
    } else {
        return Query(aqt: .and([lhs, rhs]))
    }
}

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