Meteor Mongo不能正常工作,但独立的MongoDB是

时间:2014-11-13 17:25:45

标签: javascript node.js mongodb meteor mongodb-query

我有以下文件

{
    "_id" : ObjectId("5464e68481f8252e74f6e0ef"),
    "message" : "Hello World!",
    "timestamp" : ISODate("2014-11-13T17:12:36.547Z"),
    "sender" : "D3EkLv8vatX3xfCGE",
    "receiver" : [
        {
            "id" : "YzhZchz4AwCAd3q2R",
            "seen" : false
        },
        {
            "id" : "sm2W28EKYmHz29Aoj",
            "seen" : false
        }
    ],
    "saved" : false
}

这是基本结构。现在我想获得具有当前用户ID的所有文档。 id可以在sender字段中,也可以在receiver数组中的某个对象中。这很好用:

db.messages.find({ sender: "D3EkLv8vatX3xfCGE" })

但是以下查询对Meteor Mongo实例不起作用,但在Mongo 2.6中也是如此:

db.messages.find({ receiver: {id: "YzhZchz4AwCAd3q2R"} })

我有什么方法可以让它发挥作用。此外,上述查询适用于Minimongo,但不适用于Meteor的捆绑mongo(meteor mongo),目前版本为v2.4.9。

2 个答案:

答案 0 :(得分:1)

在mongo shell上,这个查询似乎有效:

db.messages.find({ "receiver.id": "YzhZchz4AwCAd3q2R"} )

答案 1 :(得分:0)

您可以在选择器中找到使用receiver.id的特定用户的所有文档,如下所示:

Messages.find({'receiver.id': 'YzhZchz4AwCAd3q2R'})

如果您想查找特定用户是接收方的所有文档,您可以执行以下操作:

var id = 'YzhZchz4AwCAd3q2R';
Messages.find({$or: [{'receiver.id': id}, {sender: id}]});