gpt4 book ai didi

mongodb - 蒙戈 : multiple queries or not?

转载 作者:太空宇宙 更新时间:2023-11-04 01:16:06 25 4
gpt4 key购买 nike

我想知道查询 mongo db 中许多对象的最佳方法,其中每个对象都有一个附加的 _id 数组。我也想抓取引用的对象。对象的架构如下所示:

var headlineSchema = new Schema({
title : String,
source : String,
edits : Array // list of edits, stored as an array of _id's
...
});

...以及所引用的内容(如果需要):

var messageSchema = new Schema({
message : String,
user : String,
headlineID : ObjectId // also contains a ref. back to headline it's incl. in
...
});

问题的一部分(好吧,取决于我是否想继续走这条路线)是推送消息 ID 不起作用(编辑之后仍然是一个空数组 []):

db.headline.update({_id : headlineid}, {$push: {edits : messageid} }, true);

当我进行查询时,我需要一次获取大约 30 个“标题”,每个标题最多可以包含对 20 或 30 条“消息”的引用。我的问题是,获取所有这些东西的最佳方法是什么?我知道 mongo 不是关系数据库,所以我的目的是首先获取我需要的标题,然后循环遍历所有 30 个标题以获取任何附加消息。

db.headline.find({'date': {$gte: start, $lt: end} }, function (err, docs) {
if(err) { console.log(err.message); }
if(docs) {
docs.forEach(function(doc){
doc.edits.forEach(function(ed){
db.messages.find({_id:ed}, function (err, msg) {
// save stuff
});
});
});
}
});

这似乎是错误的,但我不确定还能如何继续。我是否应该费心保留一系列附加消息?我也没有接受我建立模式的方式。如果有更好的方法来跟踪它们之间的关系,或者有更好的查询来实现此目的,请告诉我。谢谢

最佳答案

每条消息是否只属于一个标题?如果是这样,您可以将标题 ID 存储为每条消息的一部分。然后对于每个标题,执行以下操作:

db.messages.find({headline_id: current-headline-id-here})

关于mongodb - 蒙戈 : multiple queries or not?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8291846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com