एकत्रीकरण ढांचे के साथ यह ऐसा दिख सकता है
db.getCollection('yourCollection').aggregate([
{
$unwind: '$arr'
},
{
$match: {
$or: [
{ 'arr.name': /world/i },
{ 'arr.description': /world/i }
]
}
},
{
$project: {
_id: '$arr._id',
name: '$arr.name',
description: '$arr.description'
}
}
])
जिसके परिणामस्वरूप आपके उदाहरण डेटा के लिए निम्न आउटपुट होगा:
{
"_id" : 1,
"name" : "Random",
"description" : "Hello world"
}
{
"_id" : 2,
"name" : "World",
"description" : "This is a random description"
}
यदि आपको अपने प्रश्न में दिखाए गए परिणामी दस्तावेज़ों के साथ एकल सरणी की आवश्यकता है, तो आप बस एक toArray()
को चेन कर सकते हैं पाइपलाइन के अंत में कॉल करें - ध्यान रखें कि इससे बड़े परिणाम सेट के मामले में स्मृति खपत में वृद्धि हो सकती है जैसा कि SSDMS
टिप्पणियों में।