使用Mongoose查询对象数组

n6lpvg4x  于 2022-09-18  发布在  Go
关注(0)|答案(1)|浏览(197)

我有一个名为Dealers的MongoDB数据库集合,结构有点像这样:

{
 ... dealer info goes here like address etc,
"user_logins": [
               {
                  "Username": "something",
                  ... other stuff
               }
               ]
},{
... next dealer etc...

我正在使用Mongoose尝试查询USER_LOGINS。Username使用如下代码:

Mongoose 模型

const myTest = mongoose.Schema({
      Username: {
          type: "String",
          required: true
          }
      }, { collection: "Dealers" })
module.exports = mongoose.model("Dealer", myTest);

该查询

Dealer.find({'user_logins.Username' : 'something'}, (err, result) => {
    if (err) {
            console.log(err);
    } else {
            res.json(result);
    }
});

所有用户名都是不同的。但它似乎并没有返回一个匹配的文档,而是返回了整个Dealers集合。

我遵循了这个例子。

https://kb.objectrocket.com/mongo-db/use-mongoose-to-find-in-an-array-of-objects-1206

请问我做错了什么?

谢谢。

编辑:如果我试图在根级别上找到一些东西,这似乎是很好的。例如。公司名称、地址等。但如果我试图查询嵌入的对象数组,它就会拉出整个集合。我还是不明白。

kpbwa7wx

kpbwa7wx1#

找到了答案。我的模型错了。它需要反映我的数据的实际结构,这确实有一定的意义。

这招奏效了:

const myTest = mongoose.Schema({
  user_logins: [{
     Username: {
      type: "String",
      required: true
      }
  }]
}, { collection: "Dealers" })
module.exports = mongoose.model("Dealer", myTest);

相关问题