Mongoose findOne是否能保证返回匹配到的最新插入文档?
问题解答
1. newestMember是否一定会返回Murat的文档?
不一定。findOne()在未指定排序规则时,MongoDB会返回第一个匹配到的文档,这个顺序取决于文档在磁盘上的存储位置或现有索引的匹配顺序,没有固定性,所以无法保证一定返回Murat的文档。
2. 是否能保证返回最新插入的文档?
完全不能。你的数据里最新插入的是Yaser334(createdAt为2022-07-15T23:27:59.688+00:00),但当前代码没有按创建时间排序,根本不会优先返回这条最新的文档。
3. 能否继续使用findOne方法?
可以继续使用findOne(),但需要调整查询逻辑,添加排序规则来确保获取最新的文档。
正确实现方式
通过sort()方法按createdAt字段降序排列,这样findOne()会返回排序后的第一个文档,也就是最新插入的那条:
const newestMember = await Users.findOne({ city: "İstanbul" }).sort({ createdAt: -1 });
或者用更直观的字符串写法:
const newestMember = await Users.findOne({ city: "İstanbul" }).sort({ createdAt: 'desc' });
内容的提问来源于stack exchange,提问作者Islam Y-
相关产品推荐
相关产品推荐

