node.js - 使用 sails.js 和 mongodb 查找子数组中对象 id $ 的文档

标签 node.js mongodb sails.js waterline

所以我有一个用于配方的模型,其中它具有“成分”关系,并且只是一个 ObjectId 数组。当我在 mongo shell 上运行以下查询时,它工作正常并返回我的所有数据。

Example model :
{
"name": "...",    
"_id": ObjectId("530ca903746515c0161e6b9f"),    
"ingredients": [
    ObjectId("53069363ff7447a81a3a7a1d"),
    ObjectId("53069363ff7447a81a3a7a17")
 ]    
}

Query:
db.drink.find({"ingredients":{"$in":[ObjectId("53069364ff7447a81a3a7a87"), ObjectId("530fb948c1a3ff480d58e43c")]}});

通过他们的水线orm使用 sails.js,但他们实际上没有办法查询这个,或者至少通过我能找到的任何可能的谷歌搜索。因此,尝试使用 native 驱动程序时,我有类似以下内容 -

var ings = new Array();
for (var i in req.body) {
  ings.push(new ObjectID(req.body[i].toString()));
}
Drink.native(function(err, collection){
  if(err){
    return res.send(err, 500);
  } else {
    collection.find({"ingredients":{"$in":ings}}).toArray(function(err, data){
      console.log(data);
    });
  }
});

问题是回调中返回的数据数组始终为空。如果我检查“ings”数组,它是一个 objectid 数组,所以我不确定为什么它不会返回任何数据。如果我删除“查找”函数中的 json 对象,它会返回所有内容。有人知道如何在使用 sails.js 时使此查询返回数据吗?

最佳答案

上面的代码实际上是有效的,这是 mongodb 上的一个内部数据问题,其中关系之间的 ID 不匹配。当关系重建时,一切都按其应有的方式进行。

关于node.js - 使用 sails.js 和 mongodb 查找子数组中对象 id $ 的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22104006/

相关文章:

javascript - 通过正则表达式从对象中删除键

node.js - 部署在多个 node.js 实例上时,passport.js 是否需要 session 关联

javascript - 使用 Firebase 实时数据库 `update` 在同一 Node 上执行多个更新

mongodb - 存储在 MongoDB 中的数组是否保持顺序?

node.js - Sails.js 迁移 - 更改(不更新表列)

node.js - SASS 的 Node 和 Gulp - 堆栈级别太深

node.js - 使用路由、 Controller 和模型重构 NodeJS 项目的中间件代码

MongoDB规范化,外键和加入

javascript - 在模型更新时向不同客户端发送响应

javascript - 将水线模型属性设置为默认值