Subdocument array से records fetch करने के लिए $unwind के साथ $push का उपयोग करें। IDs जो 234 से शुरू होते हैं, उनके लिए MongoDB में regex का उपयोग करें।
Collection बनाना
> db.demo556.insertOne(
... {
... _id:101,
... details:[
... { id:"234336", Name:"Chris" },
... { id:"123456", Name:"Bob" },
... { id:"234987", Name:"Carol" },
... { id:"989768", Name:"David" },
... { id:"234888", Name:"Sam" },
... { id:"847656", Name:"John" }
... ]
... }
... );
{ "acknowledged" : true, "insertedId" : 101 }
सभी Documents Display करना
> db.demo556.find();
Output:
{ "_id" : 101, "details" : [ { "id" : "234336", "Name" : "Chris" }, { "id" : "123456", "Name" : "Bob" }, { "id" : "234987", "Name" : "Carol" }, { "id" : "989768", "Name" : "David" }, { "id" : "234888", "Name" : "Sam" }, { "id" : "847656", "Name" : "John" } ] }
Subdocument Array से Records Fetch करने का Query
> db.demo556.aggregate({
... $match: { "_id": 101 }
... }, {
... $unwind: "$details"
... }, {
... $match: {
... "details.id": { $regex: /^234/ }
... }
... }, {
... $group: {
... _id: "$_id",
... "Detail": { $push: "$details" }
... }
... }).pretty();
Output:
{
"_id" : 101,
"Detail" : [
{ "id" : "234336", "Name" : "Chris" },
{ "id" : "234987", "Name" : "Carol" },
{ "id" : "234888", "Name" : "Sam" }
]
}
व्याख्या: $unwind array को deconstruct करता है, $match में $regex: /^234/ से "234" से शुरू होने वाले IDs filter किए, फिर $group में $push से filtered results को वापस array में combine किया।