如何按 ID node.js 过滤猫鼬集合

Posted

技术标签:

【中文标题】如何按 ID node.js 过滤猫鼬集合【英文标题】:How to filter mongoose collection by Id node.js 【发布时间】:2019-01-12 14:21:20 【问题描述】:

假设我有一个像这样的简单猫鼬模式

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const UserSchema = new Schema(
    name: String;
    age: String,
    created:  type: Date, default: Date.now 
)

module.exports = mongoose.model('User', UserSchema);

我可以通过User.find() 轻松找到所有用户集合。但我只想通过它们的_id 找到指定的集合。 例如我有 10 个用户集合,并且想在这个动态数组中根据他们的 Id 只查找用户 ["5b66c0868278664f0d2f2fec","5b66c5a947eaed565b694efa"]

所以我必须使用wherematch

【问题讨论】:

只查找并打印_id? 不仅有_id,还有姓名和年龄(所有字段) 因此您的动态数组的名称、年龄和 ID 会有所不同 在我的数组中只有动态id,我想根据他们在那个数组中的id找到用户 【参考方案1】:

你试过$in吗?

User.find(_id : $in : ["5b66c0868278664f0d2f2fec","5b66c5a947eaed565b694efa"])

$in 运算符选择字段值所在的文档 等于指定数组中的任何值。要指定 $in 表达式, 使用以下原型:

User.find( _id:  $in: ["5b66577c2f05bf1eb07956e0" ,"5b66b1879526eb0444d047cb"] )
    .then(users =>
        console.log("user", users)
    )

【讨论】:

结果只是一个空数组 我为您展示了一个适合我的示例。按多个 ID 搜索。 确保 ids 实际上在数据库中。也许它没有找到它们,因为它们实际上并不存在。 它就像一个魅力,错误是我得到了错误的 ID,谢谢!【参考方案2】:

在 postman 参数中传递用户 ID,然后将其分配给一个变量,然后将其传递给为数据库活动编写的函数。然后modal.findone(id);

【讨论】:

以上是关于如何按 ID node.js 过滤猫鼬集合的主要内容,如果未能解决你的问题,请参考以下文章

Node.js教程 ID过滤靓号写法

Node JS 从数组中删除特定对象(猫鼬)

Node.js 检测两个猫鼬查找何时完成

Node.js / Mongoose / 按顺序排序和显示

火力基地。如何在 Node JS 中收听集合并获取最新修改文档的 ID?

为啥在 Node.js 中使用猫鼬模式