node.js - 如何从 mongo db 中的对象数组中获取特定的数组元素
问题描述
我有一行,其中包含如下数据:
{
"_id" : ObjectId("5bcef76b0c9a4c194cf6d0a7"),
"userid" : ObjectId("5bc5ae4355418805b8caabb3"),
"transactionid" : "ch_1DON67EzCa9AoDtY51kialzs",
"adminid" : [
"5b5af339bc69c511816e8a2f",
"5b87948d97b752099c086708"
],
"amount" : 3220,
"ispaid" : true,
"products" : [
{
"productid" : ObjectId("5bceba35003c87043997a1d4"),
"quantity" : 2,
"price" : 200,
"type" : "product",
"isCanceled" : false,
"isDeliverd" : false,
"createdby" : "schooladmin",
"userid" : ObjectId("5b87948d97b752099c086708"),
"isReadyToPickup" : false,
"name" : "The Second Product",
"description" : " "
},
{
"productid" : ObjectId("5bc5b2df55418805b8caabbd"),
"quantity" : 2,
"price" : 100,
"type" : "product",
"isCanceled" : false,
"isDeliverd" : false,
"createdby" : "superadmin",
"userid" : ObjectId("5b5af339bc69c511816e8a2f")
},
{
"productid" : ObjectId("5bc5bc5fe84c3d028aaa269c"),
"quantity" : 2,
"price" : 100,
"type" : "product",
"isCanceled" : false,
"isDeliverd" : false,
"createdby" : "superadmin",
"userid" : ObjectId("5b5af339bc69c511816e8a2f")
}
],
"paymentUsing" : "card",
"cardBrand" : "Visa",
"country" : "US",
"paymentDate" : "2018-10-23T10:26:51.856Z"
}
我想对产品对象的所有元素执行搜索。如果其中任何一个匹配,则整个对象将存储在数组变量中。
假设,我尝试从产品数组的名称对象中搜索第二个产品字符串。那么它将给我所有元素。喜欢
[
{
"productid" : ObjectId("5bceba35003c87043997a1d4"),
"quantity" : 2,
"price" : 200,
"type" : "product",
"isCanceled" : false,
"isDeliverd" : false,
"createdby" : "schooladmin",
"userid" : ObjectId("5b87948d97b752099c086708"),
"isReadyToPickup" : false,
"name" : "The Second Product",
"description" : " "
}
]
如果找到两个或更多元素,那么它将相应地返回它的数组。
请建议我解决方案。先感谢您。:)
解决方案
像这样的东西:
db.collection.find({products: {$elemMatch: {name:'The Second Product'}}})
推荐阅读
- graphql - 从中继 11 在 useRefetchableFragment 挂钩上调用 refetch(...) 时出错
- php - WooCommerce 结帐显示基于特定运输类别的消息
- azure - 如果服务提供商结束的时间已过期,则 SAML LOGOUT
- c# - asp.net postgresql 连接 CRUD
- php - Symfony HTTP 客户端获取原始请求信息
- typescript - 映射`ConstructorParameters
` 元组到对象类型 - mongodb - 如何在 mongoDB 中进行查询以从两个具有计数布尔值的集合中获取结果
- azure - 无法 ping 我的 aci - azure 容器实例的公共 ip
- laravel - 在 dompdf 库中找不到 PDF 类
- python-3.x - 从熊猫日期帧中提取行