मेरे पास lists
संग्रह है जहां प्रत्येक दस्तावेज़ में members
की सरणी है। members
सरणी का प्रत्येक तत्व email
संपत्ति, date
संपत्ति, और कुछ अन्य मेटा के साथ एक दस्तावेज़ है। मेरे पास एक ही सूची में दो बार एक ही ईमेल में प्रवेश करने से रोकने के लिए members.email
पर एक अनन्य अनुक्रमणिका है, लेकिन मैं मूल date
मान को बनाए रखना चाहता हूं। दुर्भाग्यवश, न तो $addToSet
और न ही $push
ऐसा प्रतीत होता है।
$ धक्का का उपयोग कर उदाहरण:
$lists->update(array('_id' => $list['_id'], 'members.email' => array('$ne' => $email)), array('$push' => array('members' => array(
'email' => $email,
'date' => new MongoDate(),
// etc.
))));
और $ addToSet साथ:
$lists->update(array('_id' => $list['_id']), array('$addToSet' => array('members' => array(
'email' => $email,
'date' => new MongoDate(),
// etc.
))));
दोनों उदाहरण पूरे एम्बेडेड दस्तावेज़ नए के साथ की वजह से (मुझे लगता है) अद्वितीय date
मूल्य बदलें। क्या $push
"सदस्य" दस्तावेज़ संभव है यदि members.email
पहले से मौजूद नहीं है या मुझे इसे दो आदेशों में करने की आवश्यकता होगी?
वैकल्पिक रूप से, members
को अपने संग्रह में parent_list
-संपत्ति के साथ रखने के लिए बेहतर स्केलेबिलिटी-वार होगा?
मैं लगभग सकारात्मक $ मौजूद समाधान मैं तलाश कर रहा हूँ नहीं है। – Kevin