如何仅获取 MongoDB 中嵌套 JSON 对象的数据?


若要在 MongoDB 中获取嵌套 JSON 对象的数据,使用 findOne()。让我们创建一个包含文档的集合 -

> db.demo109.insertOne(
...    {
...       "Name" : "Chris",
...       "Subjects" : [
...          {
...             "Id" : "100",
...             "Name":"MySQL",
...             "InstructorDetails" : [
...                {
...                   "Name" : "John"
...                }
...             ]
...          },
...          {
...             "Id" : "101",
...             "Name":"MongoDB",
...             "InstructorDetails" : [
...                {
...                   "Name" : "Mike"
...                }
...             ]
...          }
...       ]
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2ee7df9fd5fd66da21447a")
}

使用 find() 方法显示集合中的所有文档 -

> db.demo109.find();

这将产生以下输出 -

{
   "_id" : ObjectId("5e2ee7df9fd5fd66da21447a"), "Name" : "Chris", "Subjects" : [
      { "Id" : "100", "Name" : "MySQL", "InstructorDetails" : [ { "Name" : "John" } ] },
      { "Id" : "101", "Name" : "MongoDB", "InstructorDetails" : [ { "Name" : "Mike" } ] }
   ] 
}

以下是仅获取 MongoDB 中的嵌套 JSON 对象的数据的查询 -

> db.demo109.findOne(
... { Name: "Chris"}
... , { 'Subjects': { $elemMatch:{'Id':"100"} } }
... , function (err, doc) { console.log(doc) });

这将产生以下输出 -

{
   "_id" : ObjectId("5e2ee7df9fd5fd66da21447a"),
   "Subjects" : [
      {
         "Id" : "100",
         "Name" : "MySQL",
         "InstructorDetails" : [
            {
               "Name" : "John"
            }
         ]
      }
   ]
}

更新于: 2020 年 3 月 30 日

797 次浏览

开启您的 职业生涯

完成课程并获得认证

立即开始
广告