繁体   English   中英

流星的Minimongo中有$运算符替代吗?

[英]Is there a $ operator alternative in Meteor's Minimongo?

我正在尝试在客户端的Meteor集合中查询数组中的特定元素,但是Minimongo不支持$运算符。 是否有其他方法可以过滤查询,使其仅返回数组中的特定元素?

我的收藏的结构如下:

{
  "userID": "abc123",
  "array": [
    {
      "id": "foo",
      "propA": "x",
      "propB": "y"
    },
    {
      "id": "bar",
      "propA": "a",
      "propB": "b"
    }
  ]
}

我正在尝试编写一个查询,该查询仅返回ID为“ foo”的数组中的对象。 在Mongo中,该查询将是这样的:

collection.find({
  "userID": "abc123",
  "array.id": "foo"
}, {
  "array.$": 1
});

但是,Minimongo在投影中不支持$运算符,因此会引发错误。 我曾尝试使用$ elemMatch进行类似结构的查询,并尝试了此处介绍解决方案,但它无法完成我要尝试的工作。

是否有其他方法可以用Minimongo查询此数组中的一个元素?

您可以使用findWhere提取数组中的第一个匹配对象。 尝试以下操作:

// Find all documents matching the selector.
const docs = Collection.find({ userId: 'x', 'array.id': 'y' }).fetch();

// For each document, find the matching array element.
for (let doc of docs) {
  let obj = _.findWhere(doc.array, { id: 'y' });
  console.log(obj);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM