Я пытаюсь удалить все коллекции, где вложенный документ "вложенный" имеет элемент 0.
Tag.deleteMany({ "blog": { $size: 0 } }).exec()
По какой-то причине он не работает с Mongoose, но работает, когда я запускаю его вRobo
db.getCollection('tags').deleteMany({ "blog": { $size: 0 } })
Кто-нибудь знает, почему он работает в оболочке запросов, а не с кодом Mongoose?Вот схема.
var tagSchema = new mongoose.Schema({
tag: String,
created: { type: Date, default: Date.now },
blog: [{ type: mongoose.Schema.Types.ObjectId,
ref: "blog" }]
var blogSchema = new mongoose.Schema({
title: String,
image: String,
description: String,
body: String,
created: { type: Date, default: Date.now },
tag:[{ type: mongoose.Schema.Types.ObjectId,
ref: "tag" }]
ОБНОВЛЕНИЕ ... Я думаю, что теперь это проблема цепочки Promise?
let foundBlog
Blog.findOne({ title: '1st Post' })
.then((blog) => {
foundBlog = blog;
})
.then(() => {
console.log(foundBlog.tag)
Tag.updateMany(
{ _id : { $in: foundBlog.tag} },
{ $pull: { blog: foundBlog._id.toString()} }).exec()
})
.then(() => {
Tag.deleteMany({ "blog": { $size: 0 } }).exec()
})
.then(() => done())
По какой-то причине Tag.deleteMany не работал после Tag.updateMany.Моя цепочка обещаний верна?Спасибо