मैं संदेशों के एक संग्रह है:क्या मोंगोडीबी में दो संग्रहों को परमाणु रूप से अपडेट करने का कोई तरीका है?
{
userid: ObjectId
total: int
unread: int
}
जब मैं कुल से "संदेश" संग्रह, मैं भी कम करने के लिए की जरूरत है "संदेश को हटा दें:
{
messageid: ObjectId
userid: ObjectId
message: string
isread: true|false
}
और संदेश का एक संग्रह प्रति उपयोगकर्ता मायने रखता है "गणना" संग्रह में, और सशर्त रूप से (यदि "message.isread" == false) "अपठित" फ़ील्ड भी कम करें।
इसके लिए मुझे पहले टीएच संदेश पुनर्प्राप्त करने की आवश्यकता है, इसके "आश्रय" फ़ील्ड को जांचें, और फिर गणनाओं को अपडेट करें। एक संभावना है कि संदेश को उन कार्रवाइयों के बीच पढ़ने के रूप में चिह्नित किया जाएगा, फिर मैं गलत तरीके से "अपठित" गणनाओं को कम कर दूंगा।
क्या एक शॉट में अन्य संग्रह के परिणामों के आधार पर एक संग्रह में सशर्त रूप से कुछ बदलने का कोई तरीका है?
यह मेरा प्रश्न भी था :) मेरी साइट तुलनात्मक रूप से उच्च भार होगी, और जब भी मुझे उनकी आवश्यकता होती है, मैं आंकड़ों को दोबारा नहीं जोड़ना चाहता, इसलिए मैं उस काउंटर संग्रह का उपयोग कर रहा हूं। – Andrey
यदि आप पहले से ऐसा नहीं कर चुके हैं तो आपको इसे प्रोफ़ाइल करना चाहिए। – Maxence
प्रोफाइलिंग के बिना भी, मैं कह सकता हूं कि कर्सर.count() हमेशा एक संख्या को पुनः प्राप्त करने से बहुत धीमा होगा, खासकर लाखों रिकॉर्ड के साथ सेट पर। – Andrey