I have an issue with array object.
"userId": "63317e7f9746ba9719845b6e",
"items": [
{
"productId": "Z357",
"piece": 1,
"_id": "63333427d7ea226b2462e734"
},
{
"productId": "A541",
"piece": 1,
"_id": "6333342cd7ea226b2462e738"
},
{
"productId": "G31",
"piece": 1,
"_id": "633334ea1ca2b582ddd0bc62"
},
{
"productId": "K1123",
"piece": 1,
"_id": "6333351028b43b58b8f83ba3"
}
],
I have an array like that. I want to get specific item with productId,
const checker = await Cart.findOne({
"items.productId": productId,
});
I'm checking an array like that, but it's giving me all of the items that contain productId, how can I get only what am I filter?
CodePudding user response:
try using find
instead of findOne
and see if it works
CodePudding user response:
You can try this way with projection to get only the matched element where your productId
is equal to the provided productId
,
const checker = await Cart.findOne({items:{ $elemMatch:{ productId: productId}}},
{userId:1,"items.$": 1});