簡體   English   中英

如何制定查詢以返回對象中內部數組的元素?

[英]How do I formulate a query to return the elements of an inner array in an Object?

在我的瀏覽器控制台中,我的db.Collection.find(“ CJiuk6jjFEBLDQrQc”)。fetch()返回帶有對象的游標,以及一個名為viewStatisticsArray數組

在下面找到返回的游標的演示:

_id: "CJiuk6jjFEBLDQrQc"
DatePosted: Wed Feb 15 2017 15:10:50 GMT+0300 (EAT)
createdBy: "Mr. Walkings"
viewStatisticsArray: Array[2]

單擊viewStatisticsArray時,它將顯示帶有兩個元素的兩個ObjectnrOfViewsstatsDate

這些元素的價值使我感興趣。

我努力了

db.Collection.find({"CJiuk6jjFEBLDQrQc"}).fetch().map(function(u) {
   console.log("Array: " + u.viewStatisticsArray); // Array: [object Object],[object Object]
   console.log("Number of Viewers: " + .viewStatisticsArray.nrOfViews); // Number of Viewers: undefined
   console.log("Stats Date: " + u.viewStatisticsArray.statsDate); // Stats Date: undefined      

return u.viewStatisticsArray
});

奇怪的是, return u.viewStatisticsArray返回Array [2]

如何制定查詢以返回帶有viewStatisticsArray數組內部元素游標

期待您的幫助。

遇到問題的原因是因為您試圖訪問viewStatisticsArray每個索引,就像它是一個對象一樣。

u.viewStatisticsArray.statsDate

但是, viewStatisticsArray是一個包含2個對象的數組。 因此,如果要獲取這些值,則必須像這樣遍歷數組。

db.Collection.find({"CJiuk6jjFEBLDQrQc"}).fetch().map(function(u) {
  console.log("Array: " + u.viewStatisticsArray); // Array: [object Object],[object Object]

  u.viewStatisticsArray.forEach(function(e, i) {
    console.log("Number of Viewers - index " + i ": " + e.nrOfViews);
    console.log("Stats Date - index " + i ": " + e.statsDate);
  });
});

由於您的文檔字段是數組,因此無法使用mongodb游標遍歷數組中的元素。 mongodb游標僅遍歷集合中的文檔。 只需使用常規javascript遍歷數組中的文檔中的字段即可(正如我上面演示的那樣)。

最后,聽起來好像即使viewStatisticsArray是一個對象數組,根據您的問題,聽起來您可能只關心數組中的最后一個索引(可能是計算了最新的日期視圖計數)。 在這種情況下,您可以執行以下操作來獲取單個對象。

var latestStats = db.Collection.find({"CJiuk6jjFEBLDQrQc"}).fetch().pop().viewStatisticsArray.pop();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM