搜索数组 MongoDB NodeJS

Posted

技术标签:

【中文标题】搜索数组 MongoDB NodeJS【英文标题】:Search array MongoDB NodeJS 【发布时间】:2020-07-10 19:15:50 【问题描述】:

我正在努力获取名称与我存储在另一个数据库中的名称相匹配的记录。 我可以检索所有数据字段,但我正在努力获取特定记录,即名称 = 杰克或吉尔。 我想使用我从护照日志中获取的变量,我可以通过 req.user.username 访问该变量。

我尝试使用 findOne 并操作 ejs 数组,但没有任何运气。 它打印到控制台,但我无法在 vieworders.ejs 上显示 我认为我过于复杂,查找和显示 applicationDB.name = req.user.username 的记录的最佳方法是什么?

server.js 是

app.get('/vieworders', require('connect-ensure-login').ensureLoggedIn(), function(req, res) 
          Myapplication.find(function(err, myorders) 
          res.render('vieworders',  user: req.user, myorders: myorders);
          console.log(myorders);
      );
);

vieworders.ejs 是

<h1> Display Orders Here </h1>
<% if(myorders.length>0)  %>
<table border="1">
        <tr>
                <th>Index</th>
                <th>Name</th>
                <th>size</th>

        </tr>
         <% for(var i=0; i<hurleys.length;i++)  %>
                <tr>
                  <td><%= i %></td>
                  <td><%= myorders[i].name %></td>
                  <td><%= myorders[i].orderssize %></td>
                </tr>
                   <%  %>

</table>
<%  else  %>
        No Record Found
      <%  %>

MyApplication 架构是

const mySchema= new Schema(
  name: 
    type: String,
    required: true,
  ,
  ordersize: 
    type: String,
    required: true,
  ,
);

module.exports = mongoose.model('MyApplication', mySchema);

【问题讨论】:

嗨,我认为我们需要 Myapplication 架构来提供答案 谢谢,添加了架构! 所以 Nico de Ory 的答案应该是正确的 【参考方案1】:

您必须将查询过滤器作为find 方法的第一个参数传递。

这应该可以解决问题,假设用户名在架构中存储为name

app.get('/vieworders', require('connect-ensure-login').ensureLoggedIn(), function(req, res) 
          Myapplication.find(name: req.user.username, function(err, myorders) 
          res.render('vieworders',  user: req.user, myorders: myorders);
          console.log(myorders);
      );
);

【讨论】:

成功了!正在尝试使用 FindOne,但没有成功,非常感谢! findOne 也可以,但它只会返回 一个 记录,所以如果你想检索特定用户的所有订单,find 就是你寻找。

以上是关于搜索数组 MongoDB NodeJS的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB 通过传递数组的参数来搜索文档

搜索数组信息的和值 - MongoDB

在 MongoDB 中的数组中搜索

搜索数组 MongoDB NodeJS

MongoDB查找连接数组

MongoDB:使用子代数组填充父代vs通过父代ID搜索子代