Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Mongoose NodeJS Express-如何将数据推送到特定的子文档对象数组_Node.js_Json_Mongodb_Express_Mongoose - Fatal编程技术网

Node.js Mongoose NodeJS Express-如何将数据推送到特定的子文档对象数组

Node.js Mongoose NodeJS Express-如何将数据推送到特定的子文档对象数组,node.js,json,mongodb,express,mongoose,Node.js,Json,Mongodb,Express,Mongoose,提前感谢您的帮助 我的问题本质上是向特定的子文档添加数据 我的NodeJS服务器中有以下型号: 模型 基本上是这样的: 例子 如您所见,我创建了两个带有一些随机数据的虚拟节点 我现在的问题是,假设我想向节点1添加一些数据。这段代码看起来怎么样 我尝试过许多变化,尝试过许多不同的事情,但没有任何运气。我知道使用对象Id会更容易,但我希望有办法解决这个问题 到目前为止,我最好的结果是使用这段代码,但不幸的是,它没有添加任何数据 addNodeData: async (req,res,next) =&

提前感谢您的帮助

我的问题本质上是向特定的子文档添加数据

我的NodeJS服务器中有以下型号: 模型 基本上是这样的: 例子 如您所见,我创建了两个带有一些随机数据的虚拟节点

我现在的问题是,假设我想向节点1添加一些数据。这段代码看起来怎么样

我尝试过许多变化,尝试过许多不同的事情,但没有任何运气。我知道使用对象Id会更容易,但我希望有办法解决这个问题

到目前为止,我最好的结果是使用这段代码,但不幸的是,它没有添加任何数据

addNodeData: async (req,res,next) => {
        const {siteCode} = xfx3090; //req.params
        const { nodeNumber } = 1;  //req. params - just to show example

        const nodeData = await Site.findOneAndUpdate({'code': siteCode, 'node.number': nodeNumber}, {$push: {'data':{'time': Date.now(), 'value':1223}}});

        res.status(200).json({message:'success'});
    }

提前谢谢你

您需要位置运算符
$

您需要的查询如下所示:

db.collection.update({
“_id”:“5fa169473a394829bc485069”,
“节点id”:“5fa1af361e085b516066d7e2”
},
{
“$push”:{
“节点.$.data”:{
“日期”:“新日期”,
“值”:“新值”
}
}
})
第一部分是查找文档。我假设
节点。\u id
不是唯一的,所以我也匹配
\u id

然后,使用文档中要添加新数据的指针,使用
$push
进入
节点。$.data
。因此,在字段
data
中将有一个新对象


mongo plauground的一个例子是

不错的解决方案。我将添加原型
更新(,)
。看起来该站点的名称也可能是一个很好的过滤器。
 {
        "_id": "5fa169473a394829bc485069",
        "code": "xfx3090",
        "name": "Name of this site",
        "description": "Some description",
        "totalNodes": 2,
        "__v": 0,
        "nodes": [
            {
                "_id": "5fa1af361e085b516066d7e2",
                "name": "device name",
                "description": "device description",
                "number": 1,
                "status": "Offline",
                "lastSeen": "2020-11-03T19:27:50.062Z",
                "data": [
                    {
                        "Date": "2019-01-01T00:00:00.000Z",
                        "value": "12"
                    },
                    {
                        "Date": "2019-01-01T00:00:00.000Z",
                        "Value": "146"
                    }
                ]
            },
            {
                "_id": "5fa1b10f4f24051520f85a58",
                "name": "device name",
                "description": "device description",
                "number": 2,
                "status": "Offline",
                "lastSeen": "2020-11-03T19:35:43.409Z",
                "data": [
                    {
                        "Date": "2019-01-01T00:00:00.000Z",
                        "Value": "555"
                    }
                ]
            }
        ]
    }
]
addNodeData: async (req,res,next) => {
        const {siteCode} = xfx3090; //req.params
        const { nodeNumber } = 1;  //req. params - just to show example

        const nodeData = await Site.findOneAndUpdate({'code': siteCode, 'node.number': nodeNumber}, {$push: {'data':{'time': Date.now(), 'value':1223}}});

        res.status(200).json({message:'success'});
    }