【发布时间】:2014-01-31 13:41:32
【问题描述】:
我的架构如下:
var FriendSchema = new Schema({
friend_id: String,
gender: String,
meta: {
address: String,
amount: Number
}
}, { _id : false });
var GroupSchema = new Schema({
unique_id: {
type: Number,
required: true,
unique: true
},
friends: [FriendSchema]
});
所以Group 包含一个friends 数组,而friend 有一个meta,其中包含一些信息。我想更新group 中符合特定条件的特定friend。这是我尝试过的:
groupQuery = {unique_id: someId, 'friends.friend_id': friendNum, 'friends.gender': gender}
groupUpdate = {$set: {'friends.$.meta.address': myAddress, 'friends.$.meta.amount': debt}}
Group.update groupQuery, groupUpdate, (err) ->
发生的情况是组中的最后一个 friend 得到更新。不是我想要的那个。我做错了什么?
【问题讨论】:
-
可能只是一个错字,但
GroupSchema使用friends而您的代码使用friend。 -
那是一个错字 - 我修正了它。同样的问题
-
代码看起来不错,所以如果
friends的最后一个元素得到更新,那么该元素必须与您的查询匹配。 -
它总是最后一个元素。不管我指定什么
-
您能否更新您的问题以包含重现该问题的示例文档?