node.js - 如何从mongodb中的对象数组中获取特定的数组元素

标签 node.js mongodb sails.js

我有一行,其中包含以下数据:

{
    "_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"
}

我想对产品对象的所有元素执行搜索。如果其中任何一个匹配,则整个对象将存储在数组变量中。

假设,我尝试从 name 对象中搜索 The Second Product 字符串 产品数组。那么它就会给我所有元素。喜欢

[
    {
        "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'}}})

关于node.js - 如何从mongodb中的对象数组中获取特定的数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52949486/

相关文章:

JavaScript 伪随机序列生成器

javascript - 如何将 Node.js、MongoDb 和 Backbone.js 组合在一个应用程序中?

javascript - 渲染从 SailsJS Controller 返回的 HTML 内容

node.js - sails.js 中验证的完整示例

mongodb - 使用 MongoDB/Meteor 更新数组中的特定元素

javascript - 什么会阻止 sailsjs 识别 req.params ?

html - 类型错误 : Cannot use 'in' operator to search for '_id' in one

node.js - docker容器构建期间Npm安装错误

node.js - 我们如何每 12 小时运行一次 node-cron 作业?

node.js - 为什么我不能使用node.js将对象插入到mongodb中?