我有一个名为cartItems的MongoDB文档,它是一个数组。
"cartItems" : [
{
"productID" : "2ae6b8013ade44ac60de872f",
"quantity" : 5
},
{
"productID" : "1ae2b8013ade32ac60de872d",
"quantity" : 5
},
{
"productID" : "6ae9b8023ade44ac60de8732",
"quantity" : 5
},
{
"productID" : "3ae9b96d3ade43ac60de8734",
"quantity" : 5
}
]
现在,我想遍历它并获取“ productID”的值。 我尝试使用.length(后来意识到这是一件很菜鸟的事),并且只给出了第一个productID。
var user = Cart.find({"_id":Meteor.userId()}).fetch()[0];
for(i=0;i<user.cartItems.length; i++){
var id = new Mongo.ObjectID(user.cartItems[i].productID);
console.log(id);
}
我也尝试使用$ size,但是由于我的文档是动态数组,所以我不知道之前有多少种产品。
我们将不胜感激。
答案 0 :(得分:0)
在mongo shell或robomongo中尝试
var user = db.col.find({}).toArray()[0];
for(i=0;i<user.cartItems.length; i++){
printjson(ObjectId(user.cartItems[i].productID));
}
答案 1 :(得分:0)
好吧,我对mongoDB没有任何经验,但这是一个如何遍历对象的每个元素的示例:
(我知道您的问题是loop
,如果没有的话,请告诉我)
var user ={ "cartItems": [
{
"productID": "2ae6b8013ade44ac60de872f",
"quantity": 5
},
{
"productID": "1ae2b8013ade32ac60de872d",
"quantity": 5
},
{
"productID": "6ae9b8023ade44ac60de8732",
"quantity": 5
},
{
"productID": "3ae9b96d3ade43ac60de8734",
"quantity": 5
}
]}
var cartItems = user.cartItems;
for (var item of cartItems){
let id = item.productID;
console.log("Id: " + id);
}
可能,使用mongo,您可以使用for..of
以相同的方式进行操作:
var user = Cart.find({"_id":Meteor.userId()}).fetch()[0];
for(var item of user.cartItems){
let id = new Mongo.ObjectID(item.productID);
console.log(id);
}
对不起,如果我在这里说废话,因为正如我说的那样,我没有mongo的经验,但这也许会有所帮助...