使用$ set在Meteor中使用点符号嵌套值不起作用

时间:2016-05-28 14:12:39

标签: mongodb meteor

我在Meteor集合中设置嵌套值时遇到问题。我有:

{
  "_id" : ObjectId("56ce676c082e64f956411a3c"),
  "RecordID" : 8514,
  "FullName" : "AIDAN ANDERSON",
  "Year" : "c16",
  "CampYear" : "ssipc16",
  "Week1" : "1",
  "Week2" : "2",
  "Week3" : "0",
  "Week4" : "0",
  "Week5" : "0",
  "Week6" : "",
  "Notes" : "",
  "RoomateRequest" : "Per, Ollie, Paul B., Linus, Sam L.",
  "LessonRequest" : "",
  "ArrivalInfo" : "",
  "Automobile" : 0,
  "Repertoire" : "Bach"
}

我的控制台发出错误:" MinimongoError:无法使用部件' RoommWk1'穿越c16"

c16是当前Year字段的值。我想在年度字段值' c16'下嵌套RoomWk1的值,即! 21A'。

不确定我哪里出错了。

编辑:

文件的当前结构是:

{{1}}

此时嵌套并不存在,但我需要嵌套“RoomWk1”'来到RoomWk5'特定年份的领域向前发展。

1 个答案:

答案 0 :(得分:0)

我会把当前年份选择器放在mongo之外。根据我的经验mongo doest喜欢[i] var currentYear = progs[i]._id

我的猜测是你有多年,你有以下巢。 {year: {c16: { RoomWk1: room }} }

您可以使用第二个选择器来获得更多控制权。我不确定你是否在文件中有这个,但是如果有一年'相当于我将它添加到选择器。这样你就可以在$ set中使用$

var currentYear = progs[i]._id Programs.update({_id: currentYear, 'year': 'c16'}, {$set: {'year.$.RoomWk1': room}}}