我有以下文件
{
"_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。
答案 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}]});