首页 > 解决方案 > 如何从对象数组中仅获取一个对象?

问题描述

我在编写查询以使用 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

标签: mongodbmeteor

解决方案


推荐阅读