2017-08-29 82 views
0

我想查询这个Mongodb对象,但似乎无法获得我需要的某些数据点。我该如何说出imagePath数据?数据保存在一个称为订单的表格中。我尝试过点符号,即order.cart [0],但无法弄清楚如何在数组中更深入。如何查询这个Mongodb对象?

{ 
    "_id": ObjectId("5976b6b11306910658b1ff57"), 
    "address": "6210 place", 
    "name": "frank", 
    "paymentId": "ch_1AjJRVDfJryYeuMpJC80cp5k", 
    "email": "[email protected]", 
    "time": ISODate("2017-07-25T03:10:41.522Z"), 
    "cart": [ 
     { 
      "items": { 
       "5975228a215c0f074b64f58e": { 
        "item": { 
         "_id": "5975228a215c0f074b64f58e", 
         "title": "Bracelet 3", 
         "imagePath": "https://www.costco.com/wcsstore/CostcoUSBCCatalogAssetStore/category-tiles/pearl-bracelets.jpg", 
         "description": "This is bracelet 3", 
         "price": 12, 
         "__v": 0 
        }, 
        "qty": 1, 
        "price": 12 
       }, 
       "59752242215c0f074b64f58c": { 
        "item": { 
         "_id": "59752242215c0f074b64f58c", 
         "title": "Bracelet 1", 
         "imagePath": "https://img0.etsystatic.com/160/0/12655872/il_340x270.1187191078_i2ha.jpg", 
         "description": "This is bracelet 1", 
         "price": 10, 
         "__v": 0 
        }, 
        "qty": 2, 
        "price": 20 
       }, 
       "5975226a215c0f074b64f58d": { 
        "item": { 
         "_id": "5975226a215c0f074b64f58d", 
         "title": "Bracelet 2", 
         "imagePath": "http://media.tiffany.com/is/image/Tiffany/EcomBrowseM/paloma-picasso-knot-bead-bracelet-34946183_963148_ED.jpg?op_usm=1.00,1.00,6.00&defaultImage=NoImageAvailable&&", 
         "description": "This is bracelet 2", 
         "price": 5, 
         "__v": 0 
        }, 
        "qty": 1, 
        "price": 5 
       } 
      }, 
      "totalQty": 4, 
      "totalPrice": 37 
     } 
    ], 
    "__v": 0 
} 
+0

你可以显示你迄今为止尝试过的代码吗?你想做什么?我正在猜测通过购物车[0] .items循环? – bluetoft

+0

实际的“点符号”是“cart.0”,用于向MongoDB发出“查询”,这与JavaScript语法不同。真的不清楚你想要做什么“查询”,因为你实际上没有说出来。你的内容“'项目”'是一个问题。您已经使用“命名键”而不是制作数组的“项目”成员。实际上,它看起来像''cart''已经在** error **中做成了一个单一的元素数组,实际上你希望这个数组是“项目”。或者至少这是结构“应该”取而代之的。 –

回答

0

const data = { 
 
    "address": "6210 place", 
 
    "name": "frank", 
 
    "paymentId": "ch_1AjJRVDfJ ryYeuMpJC80cp5k", 
 
    "email": "[email protected]", 
 
    "cart": [ 
 
     { 
 
      "items": { 
 
       "59752 28a215c0f074b64f58e": { 
 
        "item": { 
 
         "_id": "5975228a215c0f074b64f58e", 
 
         "title": "Bracelet 3", 
 
         "imagePath": "https:// www.costco.com/wcsstore/CostcoUSBCCatalogAssetStore/category-tiles/pearl-bracelets.jpg", 
 
         "description": "This is brace let 3", 
 
         "price": 12, 
 
         "__v": 0 
 
        }, 
 
        "qty": 1, 
 
        "price": 12 
 
       }, 
 
       "59752242215c0f074b64f58c": { 
 
        "item": { 
 
         "_id": "597522 42215c0f074b64f58c", 
 
         "title": "Bracelet 1", 
 
         "imagePath": "https://img0.etsystatic.com/160/0/12655872/il_340x270.11871 91078_i2ha.jpg", 
 
         "description": "This is bracelet 1", 
 
         "price": 10, 
 
         "__v": 0 
 
        }, 
 
        "qty": 2, 
 
        "price": 20 
 
       }, 
 
       "5975226a2 15c0f074b64f58d": { 
 
        "item": { 
 
         "_id": "5975226a215c0f074b64f58d", 
 
         "title": "Bracelet 2", 
 
         "imagePath": "http://media .tiffany.com/is/image/Tiffany/EcomBrowseM/paloma-picasso-knot-bead-bracelet-34946183_963148_ED.jpg?op_usm=1.00,1.00,6.0 0&defaultImage=NoImageAvailable&&", 
 
         "description": "This is bracelet 2", 
 
         "price": 5, 
 
         "__v": 0 
 
        }, 
 
        "qty": 1, 
 
        "price": 5 
 
       } 
 
      }, 
 
      "totalQty": 4, 
 
      "totalPrice": 37 
 
     } 
 
    ], 
 
    "__v": 0 
 
}; 
 

 
console.log('looping through Object.keys') 
 
Object.keys(data.cart[0].items).forEach(key => { 
 
    const cartItem = data.cart[0].items[key]; 
 
    console.log('cartItem.item.imagePath', cartItem.item.imagePath) 
 
}) 
 

 
console.log('looping through Object.values') 
 
Object.values(data.cart[0].items).forEach(cartItem=> { 
 
    
 
    console.log('cartItem.item.imagePath', cartItem.item.imagePath) 
 
})

由于您的购物车item.items是一个对象。您可以利用Object.keysObject.values来遍历对象属性。

+0

这工作!我能够正确地循环。感谢您的快速回复,甚至更少的信息(对不起,我是新手),但再次感谢! – cisco

+0

@cisco查看我更新的答案...你也可以利用Object.values(可能更容易) – bluetoft