gpt4 book ai didi

javascript - MongoDB 批量插入操作而不是 For 循环

转载 作者:行者123 更新时间:2023-11-30 09:12:14 26 4
gpt4 key购买 nike

让我们考虑一个由 NodeJSMongoDB 构建的社交网络。
因此,如果用户创建了新帖子,则应将其保存到他/她的关注者提要中。

此操作的直接实现如下(简化):

var newPost="New Post";
//get list of followers of user 1
var listOfFollowers = followersCollection.find({u:"1"});

for(var i=0;i<listOfFollowers.length;i++){
var followerId = listOfFollowers[i]._id;
//insert new post of user 1 to every follower feed
feedsCollection.insertOne(
{ownerId:followerId,authorId:"1",content:newPost}
);
}

当然,在关注者人数众多的情况下,这会有非常糟糕的表现。如何使用单个快速执行的 MongoDB 查询来做到这一点?

最佳答案

MongoDB 提供批量文档插入功能,查看此链接 - https://docs.mongodb.com/manual/reference/method/db.collection.initializeUnorderedBulkOp/

db.collection.initializeUnorderedBulkOp() 它创建一个无序列表的操作和 mongodb 并行执行这个列表,所以它很快而且你不必像 mongo 处理那样额外关注性能

对于有序插入,您可以使用 db.collection.initializeOrderedBulkOp()

例如

var newPost="New Post";
var bulk = db.followersCollection.initializeUnorderedBulkOp();
//get list of followers of user 1
var listOfFollowers = followersCollection.find({u:"1"});

for(var i=0;i<listOfFollowers.length;i++){
var followerId = listOfFollowers[i]._id;
//insert new post of user 1 to every follower feed
bulk.insert( {ownerId:followerId,authorId:"1",content:newPost});
}
bulk.execute();

如果您使用的是 Mongoose,请查看 Mongoose 文档以获取相同信息。在上面的示例中,我只是试图解释如何使用普通的 MongoDB 来做到这一点。

关于javascript - MongoDB 批量插入操作而不是 For 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57705200/

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