更新未知父字段中给定的 mongo 字段
Update a given mongo field in unknown parents fields
假设我有一个这样结构的文档:
datas: {
foo: {
...
keytoupdate: [...]
},
whatever: {
...
keytoupdate: [...]
},
anystring: {
...
keytoupdate: [...]
},
...: {
...
keytoupdate: [...]
}
}
我知道:
- "datas" 文档的每个直接子 属性 都有一个 "keytoupdate" 字段。
- "datas"文档的直接子属性因情况而异:名称不一定相同,编号也不一定相同。
我想更新每个 "keytoupdate" 个字段,无论它们有多少。
问题是:我该怎么做?有没有像 $ that does the same job for Array 这样的魔术运算符?
谢谢!
我会回答我自己的问题:没有办法做到这一点,我们不能玩动态键,算了吧!但有 2 个解决方法:
- 最好的解决方案,正如@chridam 所建议的那样,是重新设计架构以创建对象数组,其中键是数组的一部分,您可以看到
- 如果不能,另一种(但不是很好的)解决方案是对文档中可能存在的每个字段发出请求,而不是尝试在一个请求中执行此操作。这是一个非常糟糕的解决方案,特别是如果您的文档可能有很多字段,并且您必须知道哪些字段可能在您的文档中。 这是一个糟糕的解决方案,绝对没有优化,但它具有易于实现的优点
假设我有一个这样结构的文档:
datas: {
foo: {
...
keytoupdate: [...]
},
whatever: {
...
keytoupdate: [...]
},
anystring: {
...
keytoupdate: [...]
},
...: {
...
keytoupdate: [...]
}
}
我知道:
- "datas" 文档的每个直接子 属性 都有一个 "keytoupdate" 字段。
- "datas"文档的直接子属性因情况而异:名称不一定相同,编号也不一定相同。
我想更新每个 "keytoupdate" 个字段,无论它们有多少。
问题是:我该怎么做?有没有像 $ that does the same job for Array 这样的魔术运算符?
谢谢!
我会回答我自己的问题:没有办法做到这一点,我们不能玩动态键,算了吧!但有 2 个解决方法:
- 最好的解决方案,正如@chridam 所建议的那样,是重新设计架构以创建对象数组,其中键是数组的一部分,您可以看到
- 如果不能,另一种(但不是很好的)解决方案是对文档中可能存在的每个字段发出请求,而不是尝试在一个请求中执行此操作。这是一个非常糟糕的解决方案,特别是如果您的文档可能有很多字段,并且您必须知道哪些字段可能在您的文档中。 这是一个糟糕的解决方案,绝对没有优化,但它具有易于实现的优点