![](/img/trans.png)
[英]How do I design an object in such a way I could formulate a JSON like this?
[英]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時,它將顯示帶有兩個元素的兩個Object : nrOfViews和statsDate 。
這些元素的價值使我感興趣。
我努力了
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.