mongodb - 如何从对象数组中仅获取一个对象?
问题描述
我在编写查询以使用 SerialNumber 从数组中提取对象时遇到问题
db.query.findOne({orderId:'13052017002593'});
{
"_id" : "36ndPwFKGdcTDRERx",
"orderId" : "13052017002593",
"items" : [
{
"serialNumber" : "XXX",
"status" : "COMPLETED",
"shippingType" : "MESSENGER",
"shippingDate" : ISODate("2017-05-16T10:16:16.941+0000"),
"returnDeposit" : true
},
{
"serialNumber" : "YYY",
"status" : "COMPLETED",
"shippingType" : "MESSENGER",
"shippingDate" : ISODate("2017-05-16T10:16:16.941+0000"),
"returnDeposit" : true
}
],
"createdAt" : ISODate("2017-05-13T10:15:09.904+0000")
}
假设如果我想提取对象
{
"serialNumber" : "XXX",
"status" : "COMPLETED",
"shippingType" : "MESSENGER",
"shippingDate" : ISODate("2017-05-16T10:16:16.941+0000"),
"returnDeposit" : true
},
我怎样才能只提取这个对象?
我有数据库 3.2;
我尝试运行这些查询:
let params = {
$and: [{ orderId }, {'items.serialNumber':serialNumber}]
};
let ctx = {
fields:{items:{$elemMatch:serialNumber}}
}
let order = Orders.find(params,ctx).fetch()
这是错误的;
我也试过:
let order = Orders.find({orderId:orderId},{_id:0,items:{$elemMatch: {serialNumber:serialNumber}}});
返回订单对象中的所有值
任何人都可以帮助我。任何建议都非常感谢!谢谢!
我也在流星论坛发帖 https://forums.meteor.com/t/how-to-get-only-one-object-from-array-of-objects/43613
解决方案
推荐阅读
- java - Tika 服务器返回状态:404
- angular - Angular 和使用来自 API 的 JSON
- java - java 希伯来路径改成什么?
- kubernetes - EKS Fargate 连接到本地 kubelet
- java - 如何将整数 n 的总和添加到 c
- sql-server - XPath 'contains()' 需要一个单例(或空序列)
- sql - SQL:无法加入多个选择语句
- sql-server - .NET 5 + Microsoft.Data.SqlClient - 从传输流接收到意外的 EOF 或 0 字节
- angular - next 运算符在 rxjs 上没有按预期工作
- tableau-api - 如何在 Tableau 中将 3 个直方图组合成 1 个图形?