我想做一个多级数组元素删除。我的结构如下: -type Company struct { Id bson.ObjectId `bson:"_id,omitempty"` CompanyName string Process []ProcessItem}type ProcessItem struct{ SortOrder int Documents []DocumentTemplate}type DocumentTemplate struct { Id bson.ObjectId `bson:"_id,omitempty"` TemplateName string}我想删除 DocumentTemplate 类型的对象。DocumentTemplate 是 ProcessItem 中的结构数组,它是 Company 结构中的结构数组。我有公司 ID(结构公司的字段)和模板名称(结构 DocumentTemplate 的字段)。我尝试了下面的 mgo pull 查询,但它不起作用。c := db.C("company")pullQuery := bson.M{"process": bson.M{"documents.templatename": "xyz"}}err := c.Update(bson.M{"_id": "123"}, bson.M{"$pull": pullQuery})请指出我在这里犯的错误。谢谢。
2 回答
慕哥9229398
TA贡献1877条经验 获得超6个赞
您需要使用$位置运算符(https://docs.mongodb.com/manual/reference/operator/projection/positional/)。为了能够使用它,您还必须在查询中添加以下内容:
"process.documents.templatename": "xyz"
您的Update声明应如下所示:
c := db.C("company")
pullQuery := bson.M{"process.$.documents": bson.M{"templatename": "xyz"}}
err := c.Update(bson.M{"_id": "123", "process.documents.templatename": "xyz"}, bson.M{"$pull": pullQuery})
SMILET
TA贡献1796条经验 获得超4个赞
您可以从 mongo 记录中的数组中提取数组中的值
change2 := bson.M{ "$pull": bson.M{"sapinfo.systemstatus": bson.M{"$in": tags}}, }
- 2 回答
- 0 关注
- 137 浏览
添加回答
举报
0/150
提交
取消