如何按 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"]
所以我必须使用where
或match
?
【问题讨论】:
只查找并打印_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 过滤猫鼬集合的主要内容,如果未能解决你的问题,请参考以下文章