1

Mongo データベースのデータを使用するアプリケーションを作成していますが、データをフラットな形式で処理する必要があります。私のドキュメントには、文字列配列に変換したいいくつかの配列が含まれていますが、mongo クエリでそれを行う方法が見つかりません。

書類:

{
  name: 'Hello World',
  tags: ['simple', 'easy']
}

望ましい出力:

{
  name: 'Hello World',
  tags: 'simple,easy',
}
4

3 に答える 3

0

集計クエリを使用してこれを達成すると考えることができる唯一の方法は以下のとおりですが、非常に静的です。

db.test.aggregate([
    { $unwind: "$tags" },
    { $group: { _id: "$_id", name: {$first: "$name"}, firstTag: {$first: "$tags"}, lastTag: {$last: "$tags"} } },
    { $project: { name: "$name", tags: { $concat: [ "$firstTag", ",", "$lastTag" ] } } }
]);

ただし、これは mapReduce で実現できます。

db.test.mapReduce(
   function() {emit(this._id, this);},
   function(key, value) {return value}, {   
      out:"tags",
      finalize: function(key, reducedVal){
            reducedVal.tags = reducedVal.tags.join();
            return reducedVal;
      }
   }
)

> db.tags.find()
{ "_id" : ObjectId("5849a9f6a4db9c5811299d08"), "value" : { "name" : "Hello World", "tags" : "simple,easy" } }
于 2016-12-08T19:00:44.513 に答える