我的模式如下所示:

"content" : [
        {
            "_id" : ObjectId("4fc63de85b20fb72290000f8"),
            "assets" : [
                {
                    "path" : "temp/4f840af9565832fa14000002/4f840b1e565832fa14000007/4fc63de85b20fb72290000f7/content/I_Understanding_and_Measuring.pdf",
                    "_id" : ObjectId("4fc63def5b20fb722900010e")
                },
                {
                    "path" : "temp/4f840af9565832fa14000002/4f840b1e565832fa14000007/4fc63de85b20fb72290000f7/content/me.jpg",
                    "_id" : ObjectId("4fc63e4d5b20fb722900015d")
                }
            ],
            "content" : "",
            "name" : "Downloads"
        },
        {
            "_id" : ObjectId("4fc63dfd5b20fb722900012a"),
            "assets" : [
                {
                    "path" : "temp/4f840af9565832fa14000002/4f840b1e565832fa14000007/4fc63de85b20fb72290000f7/content/me.jpg",
                    "_id" : ObjectId("4fc63e055b20fb7229000147")
                },
                {
                    "path" : "temp/4f840af9565832fa14000002/4f840b1e565832fa14000007/4fc63de85b20fb72290000f7/content/thierry-henry-12-31-11-1.jpg",
                    "_id" : ObjectId("4fc63e525b20fb7229000164")
                }
            ],
            "content" : "",
            "name" : "Bio"
        }
    ],

我可以通过以下方式检索此文档:

db.presentations.find({'content.assets._id': ObjectId('4fc63def5b20fb722900010e')})`

我try 了以下方法从assets资源 集合中删除一个文档,但没有成功:

db.presentations.update(
  {'content.assets._id': ObjectId('4fc63def5b20fb722900010e')}, 
  {$pull: {'content.assets': {'_id': ObjectId('4fc63def5b20fb722900010e')}}}
)

我正试图从相应的assets个系列中删除一个项目的id.有什么 idea 吗?

推荐答案

你太近了!记住,最外层的"内容"是数组本身.所以下面两个字符的改变是有效的,在$pull的值内使用content.$.assets.

db.presentations.update(
  {'content.assets._id': ObjectId('4fc63def5b20fb722900010e')}, 
  {$pull: {'content.$.assets': {'_id': ObjectId('4fc63def5b20fb722900010e')}}}
)

向前看.

Mongodb相关问答推荐

MongoDB Aggregate:查找每个月的交叉日期范围的数量

Mongodb,在一个查询中用正则表达式更新部分字符串

Mongoose $inc 枚举验证失败

在mongo聚合中将ObjectID转换为字符串

MongoDB .NET 未在 upsert 上生成 _id

Mongo 可尾游标与 Redis 发布/订阅

Springboot 使用 find*() 查询时出现 Mongodb 错误

Mongoose 是否真的验证了对象 ID 的存在?

MongoDB 数据库,相当于 SELECT column1, column2 FROM tbl

带有 Java 驱动程序的 MongoDB 聚合

Mongo:无法在 src/mongo/shell/mongo.js:145 连接到服务器 127.0.0.1:27017

Mongo Schema-less集合和 C#

mongodb 的计数性能

mongodb类型更改为数组

如何从 Mongoose 模型对象中获取集合名称

填充mongoose后查找

我们如何使用spring boot为mongodb创建自动生成的字段

MongoDB 按数组元素对文档进行排序

MongoDB mongoexport 查询

MongoDB:删除唯一约束