internal CRUDResult Delete(int requestID, Collection collection, DeleteEntry[] deletes) { EnsureObjectNotDisposed(); m_BufferStream.Position = 0; var total = Protocol.Write_DELETE(m_BufferStream, requestID, collection, deletes); writeSocket(total); var got = readSocket(); return Protocol.Read_CRUD_Response("Delete", got); }
public static Int32 Write_DELETE(Stream stream, Int32 requestID, Collection collection, DeleteEntry[] deletes) { var body = new BSONDocument(); body.Set( new BSONStringElement("delete", collection.Name) ); var writeConcern = getWriteConcern(collection); if (writeConcern!=null) body.Set( new BSONDocumentElement("writeConcern", writeConcern) ); var arr = deletes.Select( one => { var doc = new BSONDocument(); doc.Set( new BSONDocumentElement("q", one.Query) ); doc.Set( new BSONInt32Element("limit", one.Limit==DeleteLimit.None ? 0 : 1) ); return new BSONDocumentElement(doc); } ).ToArray(); body.Set( new BSONArrayElement("deletes", arr) ); return Write_QUERY(stream, requestID, collection.Database, null, QueryFlags.None, 0, -1, body, null); }