我在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版本......
答案 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。您是否在代码中看到与此有所不同的内容?