हां -- एक ही क्वेरी का उपयोग करना संभव है।
MongoDB में एक findAndModify
. शामिल है कमांड जो किसी दस्तावेज़ को परमाणु रूप से संशोधित कर सकता है और उसे वापस कर सकता है (डिफ़ॉल्ट रूप से यह वास्तव में दस्तावेज़ को संशोधित करने से पहले वापस कर देता है)।
PHP ड्राइवरों में संग्रह वर्ग पर इसके लिए एक सुविधाजनक तरीका शामिल नहीं है (फिर भी - यह बग देखें), लेकिन इसका अभी भी उपयोग किया जा सकता है (ध्यान दें कि मेरा PHP भयानक है, इसलिए मैंने बहुत अच्छी तरह से एक वाक्यविन्यास त्रुटि की है निम्नलिखित स्निपेट में):
$key = array( 'something' => 'unique' );
$data = array( '$inc' => array( 'someint' => 1 ) );
$result = $mongodb->db->command( array(
'findAndModify' => 'collection',
'query' => $key,
'update' => $data,
'new' => true, # To get back the document after the upsert
'upsert' => true,
'fields' => array( '_id' => 1 ) # Only return _id field
) );
$id = $result['value']['_id'];