2016-07-05 7 views
0

配列の特定の位置の前に表示される配列のすべての要素を返したい以下の例を参照してください。インデックスの0からnまでの要素を検索するためのMongooseクエリです。ここでnは最後の要素の位置です。

var arr = [59,34,6,9,45,67,89] 位置= 5の場合は、最後から5番目の位置を意味し、56が必要ですアレイを取得する[56、89、67、45、9、6、34、59]

マングーススキーマ

var user_coupons_schema = new Schema({ 
mobile_no: {type: String, unique: true}, 
coupons: [{type: String}] 
}); 

マングースクエリ

usercoupons.findOne({mobile_no: mobile_no}, {'_id':0, coupons: { "$slice": [-skip, limit]}}, function(err, docs) { 
集計私のコードを使用して

更新

は以下の通りであるが、$スライス

内のNaNを来ている理由値以下で誰かが "arr_size" を教えてくださいすることができます - スキップ - >

はNaNを
usercoupons.aggregate(
     { $match : {mobile_no: mobile_no} }, 
     { $project: {arr_size: {$size: "$coupons"}} }, 
     { $project: {_id:0, coupons: { "$slice": [0, "arr_size" - skip]}} }, 
     function(err, docs) { 
      if (err) { 
       console.log('Hii1'); 
      } else { 
       if (docs) { 
        console.log('Hii2'); 
       } else { 
        console.log('Hii3'); 
       } 
      } 
     } 
    ); 
+0

スキーマに関する詳細情報を表示して、何を試してみることができますか? – Kairat

+0

私はスライスを使用したいが、スライス[スキップ、リミット]にスキップのための2つのパラメータがある - ポジションを使用することができますが、私は何を使うべきか分からないのですか? –

答えて

1

私はあなたのコメントに基づいてJavaScript配列を持っていると仮定します。

var arr = [59, 34, 6, 9, 45, 67, 89, 56, 34, 26, 56, 45]; 
var ind = 5; 
var subset = arr.slice(0, arr.length - ind + 1); // if you want to include value at ind'th position from the last 
// OR  
var subset = arr.slice(0, arr.length - ind); // if you don't want to include value at ind'th position from the last 
+0

私は単純なjavascriptの配列を持っていない私は単純な配列を持っている私の編集した投稿を見てくださいスキーマを持っていることを意味します。 –

+0

@PrakashKumar、あなたは 'doc'を手に入れて、上に示したように配列を処理することができます。もう一つの選択肢は、MongoDBの 'aggregate()'メソッドを使って配列の 'size'を取得し、docを返す前に' slice'メソッドを使うことです。 – Kairat

+0

私は0からnまでの要素をbetwenしたいので、最初のオプションを使いたいと思っていません。集計メソッドを書いてください。 –

関連する問題