我的架构如下所示:
var exampleSchema = newSchema({
profile:{
experience :[{
exp : String
}]
}
});
这是更新个人资料收集经验的代码:
exampleSchema.statics.experience = function (id,experience, callback){
var update = {
$push: {
'profile.experience': experience
}
}
this.findByIdAndUpdate(id,update,function(err) {
if (err) {
callback(err);
} else {
callback(null);
}
})
我收到的错误如The field 'profile.experience' must be an array but is of type String in document {_id: ObjectId('5653f1d852cf7b4c0bfeb54a')}[object Object]
console.log(经验)等于
{ exp: 'jlkjlkjlk' }
我的收藏品应如下所示:
experience:[
{
exp : "YYYY"
},
{
exp:"xxxx"}
]
答案 0 :(得分:2)
想象一下,你有这个系列:
/* 1 */
{
"_id" : ObjectId("565425e862760dfe14339ba8"),
"profile" : {
"experience" : [
{
"exp" : "Experto"
}
]
}
}
/* 2 */
{
"_id" : ObjectId("565425f562760dfe14339ba9"),
"profile" : {
"experience" : {
"exp" : "Experto"
}
}
}
/* 3 */
{
"_id" : ObjectId("5654260662760dfe14339baa"),
"profile" : {
"experience" : "Experto"
}
}
如果您尝试(更新doc / * 2 * /):
db.profile.update(
{ _id: ObjectId("565425f562760dfe14339ba9") },
{ $push: { "profile.experience" : { exp : "Intermediate" } } }
)
您收到此错误:
字段' profile.experience'必须是数组但属于Object类型 在文件{_id:ObjectId(' 565425f562760dfe14339ba9')}
如果您尝试(更新doc / * 3 * /):
db.profile.update(
{ _id: ObjectId("5654260662760dfe14339baa") },
{ $push: { "profile.experience" : { exp : "Intermediate" } } }
)
你会得到:
字段' profile.experience'必须是数组但类型为String 在文件{_id:ObjectId(' 5654260662760dfe14339baa')}
答案 1 :(得分:1)
我像这样改变了Schema
experience : [{type:String,exp:String}],
我的更新对象看起来像这样
var update = {
$push: {
'profile.experience': san.exp
}
};
san看起来像这样:{ exp: 'YYY' }
里面的mongoose collection像这样使用RoboMongo
"experience" : [
"experienced in XXX",
"YYY"
],
答案 2 :(得分:0)
$push: {
'profile.experience': experience
}
删除.exp
。
答案 3 :(得分:0)
首先,您必须检查是否已将您的字段声明为这样的数组(请查看字段产品):
shop = {
'name': "Apple Store",
'description': "",
'direction': "",
'contact': "",
'products':[]
}
现在,如果您想使用$ push向现场产品中添加一些东西
product = {
'name': "Iphone 6",
'description': "Iphone model 6, 64GB",
'price': 700,
'count': 3
}
myquery = { "name" : "Apple Store" }
obj ={"$push":{"products":{"$each": [product]}}}
db.collection.update_one(myquery,obj)
此代码是为PyMongo框架提供的。要在MongoDB中使用,请直接将update_one替换为update。 Mongo resource
答案 4 :(得分:0)
您可以使用 $set
代替可能有效的 $push
。
$set: {
'profile.experience': experience
}
答案 5 :(得分:-1)
您是否正在搜索将多个值添加到单个字段中,然后使用此值。 将其写为您的模型或架构:
library(datasets)
iris$dummy_virginica_iris <- 0
iris$dummy_virginica_iris[iris$Species == 'virginica'] <- 1
iris$dummy_virginica_iris
# Logistic regression model.
glm <- glm(dummy_virginica_iris ~ Petal.Width + Sepal.Width,
data = iris,
family = 'binomial')
summary(glm)
# Classifer.
glm.pred <- predict(glm, type="response")
virginica <- ifelse(glm.pred > .5, TRUE, FALSE)
然后在您的控制器中写入:
arrayremarks:[{remark: String}]