MongoDBでidが234から始まるサブドキュメント配列からレコードをフェッチします
サブドキュメント配列からレコードをフェッチするには、$pushとともに$unwindを使用します。 234から始まるIDの場合、MongoDBで正規表現を使用します。
ドキュメントを使用してコレクションを作成しましょう-
> 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 } find()メソッドを使用してコレクションからすべてのドキュメントを表示する-
> db.demo556.find();
これにより、次の出力が生成されます-
{ "_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" }
] } 以下は、サブドキュメント配列からレコードをフェッチするためのクエリです-
> db.demo556.aggregate({
... $match: {
... "_id": 101
... }
... }, {
... $unwind: "$details"
... }, {
... $match: {
... "details.id": {
... $regex: /^234/
... }
... }
... }, {
... $group: {
... _id: "$_id",
... "Detail": {
... $push: "$details"
... }
... }
... }).pretty(); これにより、次の出力が生成されます-
{
"_id" : 101,
"Detail" : [
{
"id" : "234336",
"Name" : "Chris"
},
{
"id" : "234987",
"Name" : "Carol"
},
{
"id" : "234888",
"Name" : "Sam"
}
]
} -
ドキュメントからサブドキュメントを削除するMongoDBクエリ?
ドキュメントからサブドキュメントを削除するには、update()とともに$pullを使用します。まず、ドキュメントを使用してコレクションを作成しましょう- > db.demo538.insertOne( ... { ... id:101, ... "details": ... { ... anotherDetails: ... [ ... {
-
MongoDBで配列をクエリして、特定の値をフェッチします
配列から特定の値をフェッチするには、$ projectとともにaggregate()を使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo761.insertOne( ... { ... "details": [ ... { ... "student": { ... &nb