【问题标题】:output of query inside forEach loopforEach 循环内的查询输出
【发布时间】:2020-04-15 09:32:40
【问题描述】:

我正在尝试在 mongoDB 中使用 forEach 循环编写查询。
我想要在 forEach 循环中编写查询的输出,但没有得到任何内部查询的输出。
任何人都可以指导如何编写这样的查询。
以下是我所写的

此查询获取当前行的前一条记录,并带有一些条件。

努力实现以下目标

在给定条件下查询整个集合,即{"INTENT_IDENTIFIED":true}
循环遍历所有选定的文档
获取上述结果中每个文档的上一个文档
上一个文档的条件是_id小于当前_id
USER_ID 也是一样的。

db.bothistories.find({"INTENT_IDENTIFIED":true}).limit(100).forEach(function(doc) {
  print(doc._id)
  print(doc.USER_ID)
  db.bothistories.find({$and:[{"_id":{$lt: doc._id}},{"USER_ID":doc.USER_ID}]},{"USER_ID":1,"DATA":1}).limit(1)
})

我得到了两个打印的值。

【问题讨论】:

  • 你想在这里做什么?你在两个 find() 中查询同一个集合..
  • 但我正在从每个列表中获取 vales
  • 在一个查询中合并两个 find() 条件,我认为这样会更有效
  • @GaurangDhorda 我需要找到foreach查询结果每一行的前一行。如果可以在同一查询中完成,请发布答案或提供您的建议。
  • 要在forEach 中打印查询的输出 - 将.forEach( printjson ) 添加到findquery 的末尾(在limit(1) 之后)。

标签: mongodb


【解决方案1】:

.foreach(printjson) 应该这样做

db.bothistories.find({"INTENT_IDENTIFIED":true}).limit(100).forEach(function(doc) {
  print(doc._id)
  print(doc.USER_ID)
  db.bothistories.find({$and:[{"_id":{$lt: doc._id}},{"USER_ID":doc.USER_ID}]},{"USER_ID":1,"DATA":1}).limit(1).forEach(printjson)
})

【讨论】:

    猜你喜欢
    • 2013-07-24
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 2012-07-19
    • 2017-10-27
    相关资源
    最近更新 更多