आप एकत्रीकरण का उपयोग करना चाहते हैं। तुम कर सकते हो कि इस तरह:
db.test.aggregate([
// each Object is an aggregation.
{
$group: {
originalId: {$first: '$_id'}, // Hold onto original ID.
_id: '$id', // Set the unique identifier
val: {$first: '$val'},
name: {$first: '$name'},
ttm: {$first: '$ttm'}
}
}, {
// this receives the output from the first aggregation.
// So the (originally) non-unique 'id' field is now
// present as the _id field. We want to rename it.
$project:{
_id : '$originalId', // Restore original ID.
id : '$_id', //
val : '$val',
name: '$name',
ttm : '$ttm'
}
}
])
यह ... ~ 100,000 दस्तावेजों के अपने परीक्षण DB के लिए 90ms हो जाएगा बहुत तेजी से।
उदाहरण:
db.test.find()
// { "_id" : ObjectId("55fb595b241fee91ac4cd881"), "id" : 1, "name" : "x", "ttm" : 23, "val" : 5 }
// { "_id" : ObjectId("55fb596d241fee91ac4cd882"), "id" : 1, "name" : "x", "ttm" : 34, "val" : 1 }
// { "_id" : ObjectId("55fb59c8241fee91ac4cd883"), "id" : 1, "name" : "x", "ttm" : 24, "val" : 2 }
// { "_id" : ObjectId("55fb59d9241fee91ac4cd884"), "id" : 2, "name" : "x", "ttm" : 56, "val" : 3 }
// { "_id" : ObjectId("55fb59e7241fee91ac4cd885"), "id" : 2, "name" : "x", "ttm" : 76, "val" : 3 }
// { "_id" : ObjectId("55fb59f9241fee91ac4cd886"), "id" : 3, "name" : "x", "ttm" : 54, "val" : 7 }
db.test.aggregate(/* from first code snippet */)
// output
{
"result" : [
{
"_id" : ObjectId("55fb59f9241fee91ac4cd886"),
"val" : 7,
"name" : "x",
"ttm" : 54,
"id" : 3
},
{
"_id" : ObjectId("55fb59d9241fee91ac4cd884"),
"val" : 3,
"name" : "x",
"ttm" : 56,
"id" : 2
},
{
"_id" : ObjectId("55fb595b241fee91ac4cd881"),
"val" : 5,
"name" : "x",
"ttm" : 23,
"id" : 1
}
],
"ok" : 1
}
पेशेवरों: लगभग पूर्ण रूप से सबसे तेजी से विधि।
CONS: जटिल एकत्रीकरण API का उपयोग शामिल है। साथ ही, यह कड़ाई से दस्तावेज़ की मूल स्कीमा के साथ मिलकर है। हालांकि, इसे सामान्य बनाना संभव हो सकता है।
धन्यवाद, हाँ, मुझे पूरा दस्तावेज चाहिए लेकिन कोई डुप्लिकेट आईडी दस्तावेज़ –
'विशिष्ट (: आईडी)' डुप्लिकेट आईडी के बिना पूरे दस्तावेज़ लौटाता है। – Voldy
@ वोल्डी - मुझे मोंगो शैल में काम करने के लिए वह वाक्यविन्यास नहीं मिल सकता है, मुझे एक वाक्यविन्यास त्रुटि देता है? – AdaTheDev