我可以在地图上使用 $addToSet 吗?
该文档显示我可以使用 $addToSet
在文档不存在时将其添加到文档中。但我不确定它是否可以用于将 Map
类型添加到文档中。 例如:
public static void AddToSet(DBCollection collection, Map conditions, String key, Object value) {
BasicDBObject so = new BasicDBObject();
so.putAll(conditions);
collection.update(so, new BasicDBObject("$addToSet", BasicDBObjectBuilder.start().add(key, value)));
}
我传递 value
一个 HashMap 它会起作用吗?
如果这样会导致性能问题或者不推荐吗?为什么?
The document shows I can use $addToSet
to add an element to document when it does not exists.But I am not sure it could use to add Map
type to a document.
For Example:
public static void AddToSet(DBCollection collection, Map conditions, String key, Object value) {
BasicDBObject so = new BasicDBObject();
so.putAll(conditions);
collection.update(so, new BasicDBObject("$addToSet", BasicDBObjectBuilder.start().add(key, value)));
}
I deliver value
a HashMap will it works?
If so will it lead to performance problem or not recommend?Why?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您只想将该字段/键设置/添加到该值,则不应使用 $addToSet,而只需使用 $set。
这就像您的文档是 Map 并且您想要一个新的键/值一样,只不过它是在服务器上完成的。
If you just want to set/add that field/key to that value you shouldn't use $addToSet but simply $set.
It is the same as if your document was Map and you want to and a new key/value, except it is done on the server.
您将无法使用映射,因为它不是 mongodb 支持的类型。如果你把地图做成一个DBObject,你就可以做这样的操作。
You won't be able to use a map because it isn't a type that mongodb supports. If you made the map into a DBObject, you could do this kind of operation.