Meteor查询不能与Meteor.Collection.ObjectID一起使用

时间:2013-12-31 00:53:18

标签: mongodb meteor

我在Meteor中获取某些集合的查询结果时遇到了很多麻烦。 我已经设置了

idGeneration : 'MONGO'

在集合定义中,在mongo shell中,这些集合看起来像这样:

the document i want, call it documentW (from CollectionA) = { 
    "_id" : ObjectId("7032d38d35306f4472844be1"), 
    "product_id" : ObjectId("4660a328bd55247e395edd23"), 
    "producer_id" :  ObjectId("a5ad120fa9e5ce31926112a7") }

documentX (from collection "Products") = {
    _id : ObjectId("4660a328bd55247e395edd23")
}

documentY (from collection "Producers") = {
    _id : ObjectId("a5ad120fa9e5ce31926112a7")
}

如果我在Meteor中运行这样的查询

CollectionA.findOne({ product_id : documentX._id, producer_id : documentY._id})

我期待把我的文件拿回来......但我一无所获。

当我在mongo shell中运行此查询时

db.collectiona.find({ product_id : ObjectId("4660a328bd55247e395edd23"), producer_id : 
ObjectId("a5ad120fa9e5ce31926112a7") })

我的文档没有问题。

当然,如果我打电话给Meteor,那就是

console.log(documentX._id)

我明白了

{ _str : "4660a328bd55247e395edd23" }

任何人都有任何想法在这里发生了什么?我尝试了各种各样的事情,比如

Meteor.Collection.ObjectID(documentX._id._str)

但搜索仍然返回空...

运行Meteor的最新0.7.0.1版本......

1 个答案:

答案 0 :(得分:1)

我不知道这是否能回答您的问题,但我不能将此代码放在评论中。这段代码对我有用,试图遵循我认为你想要做的事情:

Products = new Meteor.Collection("products", {
  idGeneration: "MONGO"
});
Producers = new Meteor.Collection("producers", {
  idGeneration: "MONGO"
});
CollectionA = new Meteor.Collection("a", {
  idGeneration: "MONGO"
});

Products.insert({
  foo: "bar"
});
Producers.insert({
  fizz: "buzz"
});

var documentX = Products.findOne();
var documentY = Producers.findOne();

CollectionA.insert({
  product_id: documentX._id,
  producer_id: documentY._id
});

var documentW = CollectionA.findOne({
  product_id: documentX._id,
  producer_id: documentY._id
});

console.log(documentW); // This properly logs the newly created document

这是在0.7.0.1。您是否在代码中看到与此有所不同的内容?