【问题标题】:Mongodb match array of objectsMongodb匹配对象数组
【发布时间】:2017-07-18 18:28:28
【问题描述】:

我的架构:

const UserSchema = new Schema({
  firstname: { type: String },
  lastname: { type: String }
});

假设我有一个集合users,其中包含以下文档:

{ "_id" : 1, "firstname" : "hello", "lastname" : "world" }
{ "_id" : 2, "firstname" : "hello", "lastname" : "earth" }

客户端向我的服务器发送下面的搜索查询。 使用猫鼬,我需要查询 mongodb,它应该返回与第二个对象匹配的 _id 1 的用户。

[{
  firstname: 'hello',
  lastname: 'you'
},
{
  firstname: 'hello',
  lastname: 'world'
}
{
  firstname: 'hello',
  lastname: 'hello'
}]

请注意搜索查询不是静态的,它可以是:

[{
  firstname: 'fsefsefsef',
  lastname: 'fsefsecsfe'
},
{
  firstname: 'fsefsef',
  lastname: 'esfsf'
}
{
  firstname: 'zefzef',
  lastname: 'fzefzfz'
}]

在这种情况下,结果应该是一个空数组,因为没有用户匹配查询中的任何对象

【问题讨论】:

  • 我不明白。
  • 这是一个非常棘手的问题或一个明显的问题:UserSchema.findOne({ firstname: 'hello', lastname: 'word' }, function (err, user) {});
  • @Mikey 我需要查询整个数组,我只是尝试了一个 foreach 和一个 promise all,它似乎工作,但我觉得它有点矫枉过正

标签: node.js mongodb mongoose


【解决方案1】:

您可以在 find 方法中传递该对象。

User.find(query[1])

【讨论】:

  • 查询不是我可以控制的,它是从客户端发送的,就像一个搜索查询,这意味着我不能手动只从该查询中获取第二个对象并进行查找; )
  • 如果你定义了user1,那么你为什么需要查询数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-30
  • 2019-12-03
  • 2017-08-22
  • 2021-04-20
相关资源
最近更新 更多