2016-07-05 48 views
0

我想返回出現在數組中最後一個特定位置之前的數組的所有元素,for例子見下面的例子。Mongoose查詢在數組中檢索從索引0到n的元素,其中n是最後一個元素的位置

var arr = [59,34,6,9,45,67,89,56,34,26,56,45] 現在對於位置= 5,這意味着從最後一個56位我想要的第5個位置得到陣列[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

我想使用切片,但在切片[跳過,限制]有兩個參數跳過我可以使用-position,但我不知道限制我應該使用什麼? –

回答

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'和'slice'。 – Kairat

+0

我只想要0到n之間的元素,這就是爲什麼我不想去第一個選項,你可以寫聚合查詢方法? –

相關問題