我正在使用猫鼬。如何将新值推入数组fixture2
?
这是我的收藏。我使用userHash
来标识此文档。
{
"_id" : ObjectId("5d2548beb1696f1a2d87d647"),
"userHash" : "5c4b52fc2dfce2489c932e8fcd636a10",
"fixtures" : [
{
"fixture1" : [
"vote1",
"vote2"
],
"fixture2" : [
"vote1",
"vote2",
"vote3"
],
"fixture3" : [
"vote1"
]
}
],
"__v" : 0
}
fixtures
可以包含任意数量的元素。在这种情况下,它只有3个。
这是我的模特。
var mongoose = require( 'mongoose' );
var votesSchema = mongoose.Schema({
userHash: String,
fixtures: [{}]
});
module.exports = mongoose.model('votes', votesSchema);
但是,我正在努力尝试将值vote4
推到fixture2
。是否可以使用findOneAndUpdate
来提交?
答案 0 :(得分:1)
您可以使用$push
来完成此操作。
示例:
YourModel.findOneAndUpdate(condition, {$push: {"fixtures.0.fixture2": "vote4"}})
答案 1 :(得分:1)
您可以使用以下查询
update(
{ "fixtures.fixture2": { "$exists": true } },
{ "$push": { "fixtures.$.fixture2": "vote4" } }
)
答案 2 :(得分:1)
您可以使用$(update)位置运算符来实现此目的。
此外,不要忘记在更新选项中使用{multi : true}
,以更新集合中的所有documents
。
尝试一下:
Votes.update(
{ "fixtures.fixture2": { "$exists": true } },
{ "$push": { "fixtures.$.fixture2": "vote4" } },
{ multi : true}
)
但这只会更新第一个匹配的Fixture2。
要更新fixture2
数组中所有元素的fixtures
,您可能想使用$[]
。
尝试一下:
Votes.update(
{ "fixtures.fixture2": { "$exists": true } },
{ "$push": { "fixtures.$[].fixture2": "vote4" } },
{ multi : true}
)
详细了解有关$[](positional-all)的信息。