【问题标题】:Meteor Mongo not working but standalone MongoDB isMeteor Mongo 不工作,但独立的 MongoDB 是
【发布时间】:2014-11-13 17:25:44
【问题描述】:

我有以下文件

{
    "_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 可以在发送者字段中,也可以在接收者数组中的对象之一中。这工作正常:

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

但以下查询不适用于 Meteor Mongo 实例,但在 Mongo 2.6 中可以:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      如果您想查找特定用户是接收者发送者的所有文档,您可以这样做:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-13
        • 2014-11-14
        • 2018-06-15
        • 2014-09-27
        • 2020-01-20
        • 2021-08-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多