示例#1
0
        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);
        }
示例#2
0
文件: Protocol.cs 项目: itadapter/nfx
        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);
        }