Computer >> 컴퓨터 >  >> 프로그램 작성 >> MongoDB

MongoDB의 배열에서 위치를 검색하시겠습니까?

<시간/>

맵 축소의 개념을 사용하여 배열의 위치를 ​​얻을 수 있습니다. 먼저 문서로 컬렉션을 생성해 보겠습니다. −

> 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입니다. 위치 2 −

에 있는 값 "Java"를 확인할 수 있습니다.
> 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
}