在 MongoDB 中检索数组中的位置?

您可以使用 map reduce 的概念来获取数组中的位置。让我们首先创建一个包含文档的集合 -

> db.retrievePositionDemo.find();

{ "_id" : ObjectId("5cd569ec7924bb85b3f4893f"), "Subjects" : [ "MySQL", "MongoDB", "Java" ] }

以下是在find()方法的帮助下显示集合中所有文档的查询-

> db.retrievePositionDemo.find().pretty();

这将产生以下输出 -

{

    "_id" : ObjectId("5cd569ec7924bb85b3f4893f"),

    "Subjects" : [

       "MySQL",

       "MongoDB",

        "Java"

    ]

}

以下是在 MongoDB 中检索数组位置的查询 -

> db.retrievePositionDemo.mapReduce(

...     function() {

...         emit(this._id,{ "IndexValue": this.Subjects.indexOf("MongoDB") });

...     },

...     function() {},

...     {

...         "out": { "inline": 1 },

...         "query": { "Subjects":"MongoDB"}

...     }

... );

这将产生以下输出 -

{

   "results" : [

      {

        "_id" : ObjectId("5cd569ec7924bb85b3f4893f"),

         "value" : {

            "IndexValue" : 1

         }

      }

   ],

   "timeMillis" : 662,

   "counts" : {

      "input" : 1,

      "emit" : 1,

      "reduce" : 0,

      "output" : 1

   },

   "ok" : 1

}

查看上面的示例输出,值“MongoDB”的索引或位置为 1。您可以检查值“Java”,它位于位置 2 -

> db.retrievePositionDemo.mapReduce(

...     function() {

...         emit(this._id,{ "IndexValue": this.Subjects.indexOf("Java") });

...     },

...     function() {},

...     {

...         "out": { "inline": 1 },

...         "query": { "Subjects":"MongoDB"}

...     }

... );

这将产生以下输出 -

{

   "results" : [

      {

         "_id" : ObjectId("5cd569ec7924bb85b3f4893f"),

         "value" : {

            "IndexValue" : 2

         }

      }

   ],

   "timeMillis" : 30,

   "counts" : {

      "input" : 1,

      "emit" : 1,

      "reduce" : 0,

      "output" : 1

   },

   "ok" : 1

}

以上是 在 MongoDB 中检索数组中的位置? 的全部内容, 来源链接: utcz.com/z/350498.html

回到顶部