【问题标题】:How to filter mongoose collection by Id node.js如何按 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找到用户

标签: node.js mongodb express mongoose mongoose-populate


【解决方案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);

【讨论】:

    猜你喜欢
    • 2021-01-18
    • 2022-11-10
    • 2019-12-29
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 2019-07-20
    相关资源
    最近更新 更多