从整个mongodb数据库中删除匹配的文档
Remove matching documents from the entire mongo db
我有一个API,用户可以在其中添加,更新和删除cats
-为了示例的缘故。
每个cat
都有对其他mongodb
集合的引用,比如owner
和vet
。
所以当我添加了一个猫,这是mongodb
集合在程序运行一次后的样子:
db.find.cats()
{ "_id" : ObjectId("580"), "name" : "Hi", "username" : "test1111"}
db.find.vet()
{ "_id" : ObjectId("111"), "place" : "World", "username" : "test1111"}
db.find.owner()
{ "_id" : ObjectId("123"), "job" : "Engineer", "username" : "test1111"}
当用户删除Cat
时,我希望删除三个集合中的所有三个文档,因为它们通过cats用户名链接到cat。我该怎么做呢?
我已经试过了:
router.delete('/test', function (req, res, next) {
Cats.findByIdAndRemove(req.params.id, req.body, function (err, post) {
if (err) return next(err);
res.json({success: true});
});
});
然而,这只从Cat
集合中删除猫,因为我只搜索Id -其行为如预期的那样。我是否必须分别为每个集合执行查找和删除操作?
任何帮助将不胜感激!
谢谢
显然,当你在猫的集合Cats.findByIdAndRemove
上触发findByIDandRemove时,它只会从单个集合中删除它,通常这就是你应该如何编写代码。
如果您想从所有三个集合中删除它,那么您还需要调用兽医和所有者集合上的findByIdAndRemove
。
可以通过创建一个侦听器来维护相关集合的完整性来实现这一点。
删除时设置一个附加属性
toBeDeleted: true
收听
Cats
表的更新。寻找一些toBeDeleted: true
收听代码执行参照完整性管理如:
remove from
Cats
remove from
Vets
remove from
Owners
因此集合不应该是相关的。为了避免这种开销,您可以将这三个文档保存为一个文档。您总是可以从该文档检索惟一的所有者和兽医。遵循文档。一般来说,我们不应该在关系范式中尝试mongodb(尽管我理解某些情况,这保证了你正在做的事情)
相关文章:
- 删除“;NaN”;来自HTML文档
- 如何筛选要写入新文档的HTML,删除JavaScript中的某些类和/或ID
- 从 MonogDB 中删除具有特定密钥计数的文档
- MongoDB 删除重复的子文档
- 如何使用文档的ID从mongoDB集合中删除文档
- 查找文档,然后在数组中查找条目并将其从数组中删除
- 如何删除MongoDB中的文档和所有嵌入文档
- 无论如何都要获取文档.在不删除整个页面的情况下写入即可工作
- 如何删除猫鼬中的特定子文档
- 可以't通过Express路由从Mongodb中删除文档
- 在文档中搜索文本以删除的文本超过找到它的标签
- 如何使用vanillaJS将mp4视频插入到具有特定维度的html文档中,播放2秒,然后删除节点
- 从Express,Node.js应用程序中删除MongoDB文档
- 使用 OR 条件删除带有猫鼬的 MongoDB 中的文档
- 如何删除创建的创建文档片段对象
- 如果当前日期>文档日期,如何删除文档
- 如何使用猫鼬从集合中删除所有文档
- 如何使用 ExtendScript 从 InDesign 文档的所有脚注引用中删除斜体和粗体样式
- JQuery 文档单击取消绑定将删除所有子单击事件
- j查询文档删除键