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 }
-
MongoDBは$sliceを集約して、配列の長さを取得します
これには、$ projectを使用し、その中で$sizeを使用して長さを取得します。まず、ドキュメントを使用してコレクションを作成しましょう- > db.demo382.insertOne( ... { ... ... "Name" : "David", ... "details" : [ ... { ... &
-
MongoDBのコレクションに関連するドキュメントの位置を返す方法は?
コレクションに対するドキュメントの位置を返すには、count()とともにsort()を使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo47.insertOne({"ClientName":"Adam"}); { "acknowledged" : true, "insertedId" : ObjectId("5e267240cfb11e5c34d898f0") } > db.demo47.inser