MongoDB:如何将由具有数组的对象组成的数组$push到数组
这就是我的猫鼬模式-MongoDB:如何将由具有数组的对象组成的数组$push到数组,mongodb,mongoose,Mongodb,Mongoose,这就是我的猫鼬模式- const GameLogSchema = new Schema({ _score: Number, _playerData: { x: Number, y: Number, }, _zoneData: [{ _x: Number, _height: Number }], _pipeData: [{ _x: Number, _randomeHeightTop: Number }],
const GameLogSchema = new Schema({
_score: Number,
_playerData: {
x: Number,
y: Number,
},
_zoneData: [{ _x: Number, _height: Number }],
_pipeData: [{ _x: Number, _randomeHeightTop: Number }],
_gap: Number,
});
const PlayerSchema = new Schema({
/* other fields */
_gameLogs: {
type: [[GameLogSchema]],
},
});
这就是它应该处理的数据的样子-
散布其中一个物体-
如何将具有数组的对象数组推入数组?最好是在nodejs mongoose中
编辑- 我试着做一些类似的事情 我用我的模式尝试了这个-
const PlayerSchema = new Schema({
/* other fields */
_gameLogs: [
{
_logs: [{ _log: { _score: Number } }],
},
],
});
这是我的更新功能-
Player.findOneAndUpdate(
{ \* filter *\ },
{
$push: {
/* pushing something other, that works */
_gameLogs: {
'_gameLogs.$._logs': {
'_logs.$._log': { '_log.$._score': req.body.gameLogs.score },
},
},
},
$inc: { _totalGamesPlayed: 1, '_gameStreak._gamesPlayed': 1 },
},
{ safe: true, upsert: true, new: true, minimize: false },
(err, result) => {
console.log(result);
}
);
它输出一个列表,其中包括
{{u日志:[],[u id:5f4f5979fba2d03c40d4aed7},
。这是否回答了您的问题@turivishal naah没有。我的比你发布的有一个额外的层,并且子数组未命名。我试过了。我正在发布我在编辑中所做的。你做错了。再看一下建议的问题,您需要这样做$push:{''u gameLogs.$.'u logs':{''u log.'u score':req.body.gameLogs.score}
,并且它还需要在该数组的查询部分中设置条件。@turivishal它不起作用。如果我把一个数组放入一个数组中,你的代码可能会工作。但我所做的是把一个数组推到一个数组中,这个数组包含的对象里面也有数组。它类似于-[{a:[],b:[]},{a:[],b:[]},]
。我试着把它推到一个数组字段中。