MongoDB查询以查找包含点的键的记录?

为此,请使用$addFields。在这种情况下,使用$objectToArray以键和值的形式获取数据。将$filter和$indexOfBytes一起使用以检查是否有任何键。在里面。

首先让我们创建一个包含文档的集合-

> db.demo364.insertOne(

...   {

...       "details" : {

...          "details1.otherdetails.Name" : {"FirstName":"Chris" }

...       }

...    }

... );

{

   "acknowledged" : true,

   "insertedId" : ObjectId("5e57d485d0ada61456dc936d")

}

> db.demo364.insertOne(

...    {

...       "details" : {

...          "details1.otherdetails.Name" : {"FirstName":"David" }

...       }

...    }

... );

{

   "acknowledged" : true,

   "insertedId" : ObjectId("5e57d486d0ada61456dc936e")

}

find()方法的帮助下显示集合中的所有文档-

> db.demo364.find();

这将产生以下输出-

{ "_id" : ObjectId("5e57d485d0ada61456dc936d"), "details" : { "details1.otherdetails.Name" : { "FirstName" : "Chris" } } }

{ "_id" : ObjectId("5e57d486d0ada61456dc936e"), "details" : { "details1.otherdetails.Name" : { "FirstName" : "David" } } }

以下是查找带有包含点的键的记录的查询-

> db.demo364.aggregate([

...    {

...       $addFields: {

...          result: {

...             $filter: {

...                input: { $objectToArray: "$details" },

...                cond: {

...                   $ne: [ { $indexOfBytes: [ "$$this.k", "." ] } , -1 ]

...                }

...             }

...          }

...       }

...    },

...    {

...       $match: {

...          $expr: {

...             $ne: [ { $size: "$result" }, 0 ]

...          }

...       }

...    },

...    {

...       $project: {

...          result: 0

...       }

...    }

... ])

这将产生以下输出-

{ "_id" : ObjectId("5e57d485d0ada61456dc936d"), "details" : { "details1.otherdetails.Name" : { "FirstName" : "Chris" } } }

{ "_id" : ObjectId("5e57d486d0ada61456dc936e"), "details" : { "details1.otherdetails.Name" : { "FirstName" : "David" } } }

以上是 MongoDB查询以查找包含点的键的记录? 的全部内容, 来源链接: utcz.com/z/331488.html

回到顶部