2016-05-11 2 views
1

によるフィルタリング、それが可能である:アイテムインデックスによってのMongoDB:アレイをフィルタリングする場合、配列は、インデックスまたは他のフィールド

  1. フィルタ(例えば、すべての配列要素が、最初の取得しますか)?配列フィールドを含む同じドキュメント内の別のフィールドの値によって

  2. フィルタ?

ドキュメント考えてみましょう:

{ 
    _id: 1, 
    first_seen_on: 20160312, 
    seen_on: [20160312, 20160313, 20160324] 
} 

私は(私は$first_seen_onがリテラル値として扱われていると思います)これは動作するようには思えない[20160313、20160324]

になるためのseen_on配列を必要とします:

 'repeats': { 
      '$filter': { 
       'input': '$seen_on', 
       'as': 'date', 
       'cond': {'$ne': ['$date', '$first_seen_on']} 
      } 
+0

あなたはフィルタリングを言うとき、あなたは集約パイプラインのフィルタ段を参照してください? – lesingerouge

+0

集約パイプラインのプロジェクトの段階で、私が含まれているサンプルコードのように、アレイのフィルタ。 –

答えて

1

使用$setDifference次のように

db.collection.aggregate([ 
    { 
     "$project": { 
      "repeats": { 
       "$setDifference": ["$seen_on", ["$first_seen_on"]] 
      } 
     } 
    } 
]) 

サンプル出力

/* 1 */ 
{ 
    "_id" : 1, 
    "repeats" : [ 
     20160313, 
     20160324 
    ] 
} 
関連する問題