diff --git a/extra/mongodb/driver/driver.factor b/extra/mongodb/driver/driver.factor index 0fff78249c..28e6e2c0aa 100644 --- a/extra/mongodb/driver/driver.factor +++ b/extra/mongodb/driver/driver.factor @@ -185,6 +185,15 @@ PRIVATE> : ( collection assoc -- mdb-query-msg ) ; inline +: >slave-ok ( mdb-query-msg -- mdb-query-msg ) + [ 2 set-bit ] change-flags ; + +: >await-data ( mdb-query-msg -- mdb-query-msg ) + [ 5 set-bit ] change-flags ; + +: >tailable ( mdb-query-msg -- mdb-query-msg ) + [ 1 set-bit ] change-flags ; + : limit ( mdb-query-msg limit# -- mdb-query-msg ) >>return# ; inline @@ -299,13 +308,17 @@ PRIVATE> : run-cmd ( cmd -- result ) send-cmd ; inline -: delete ( collection selector -- ) - [ check-collection ] dip - send-message-check-error ; +: ( collection selector -- mdb-delete-msg ) + [ check-collection ] dip ; -: delete-unsafe ( collection selector -- ) - [ check-collection ] dip - send-message ; +: >single-remove ( mdb-delete-msg -- mdb-delete-msg ) + [ 0 set-bit ] change-delete-flags ; + +: delete ( mdb-delete-msg -- ) + send-message-check-error ; + +: delete-unsafe ( mdb-delete-msg -- ) + send-message ; : kill-cursor ( mdb-cursor -- ) id>> send-message ; diff --git a/extra/mongodb/msg/msg.factor b/extra/mongodb/msg/msg.factor index 3d1ca28557..5011e8897c 100644 --- a/extra/mongodb/msg/msg.factor +++ b/extra/mongodb/msg/msg.factor @@ -44,6 +44,7 @@ TUPLE: mdb-update-msg < mdb-msg TUPLE: mdb-delete-msg < mdb-msg { collection string } + { delete-flags integer initial: 0 } { selector assoc } ; TUPLE: mdb-getmore-msg < mdb-msg diff --git a/extra/mongodb/operations/operations.factor b/extra/mongodb/operations/operations.factor index 1b51e2d377..cb41ae5ea9 100644 --- a/extra/mongodb/operations/operations.factor +++ b/extra/mongodb/operations/operations.factor @@ -128,9 +128,12 @@ PRIVATE> : write-delete-message ( message -- ) [ - [ flags>> write-int32 ] - [ collection>> write-cstring ] - [ 0 write-int32 selector>> assoc>stream ] tri + { + [ flags>> write-int32 ] + [ collection>> write-cstring ] + [ delete-flags>> write-int32 ] + [ selector>> assoc>stream ] + } cleave ] (write-message) ; inline : write-getmore-message ( message -- ) diff --git a/extra/mongodb/tuple/tuple.factor b/extra/mongodb/tuple/tuple.factor index c787405f04..3b0392b70d 100644 --- a/extra/mongodb/tuple/tuple.factor +++ b/extra/mongodb/tuple/tuple.factor @@ -73,7 +73,7 @@ PRIVATE> : delete-tuple ( tuple -- ) [ tuple-collection name>> ] keep - id-selector delete ; + id-selector delete ; : delete-tuples ( seq -- ) [ delete-tuple ] each ;