node.js,mongoose如何通过多个ID在对象数组中查找

标签 node.js mongodb mongoose

我将 Node.js 与 Mongoose 模块一起使用,但遇到了问题。

我有一个架构模型,如下所示:

_id: '',
foo: '',
bar: '',
fb: [{
    id: ''
}]

如何查找集合中匹配 fb[0].id 并传入 ID 数组的所有对象?

我已经尝试过这个(带有以下查询的 find() 方法):

{'fb[0].id': {$in: friendsIDList}}

还有这个:

{'fb': {$in: [{id: friendsIDList}]} }

甚至这个

{'fb': {$in: {$in: friendsIDList}}}

更清楚地说,我有一个用户对象,其中包含 fb 参数中的 FB 数据,但它是一个仅包含一个带有数据的对象的数组。 现在我收到一个好友ID列表,想查询所有用户好友。

最佳答案

MongoDB 有一个名为 dot notation 的东西,因此您可以使用 'foo.0.id': 'id' 进行查询。

测试如下:

> db.users.insert({foo: 'foo', bar: 'bar', fb: [ { id: '456' } ]})
> db.users.find({'fb.0.id': '456'}).pretty()
{
    "_id" : ObjectId("52fb695e403fb143985459dc"),
    "foo" : "foo",
    "bar" : "bar",
    "fb" : [
        {
            "id" : "456"
        }
    ]
}

关于node.js,mongoose如何通过多个ID在对象数组中查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21724492/

相关文章:

javascript - 将可变长度数组传递给函数 Node JS

mongodb - Golang 和 Mgo 按 $natural : -1 排序

ruby-on-rails - 查询 Mongoid/rails 3 ("Lower than"中的嵌入对象,最小运算符和排序)

mongodb - hasgoy/belongsTo导致MongoDB Grails GORM发生意外行为

node.js - 使用一个 Mongoose 查询的结果进行另一查询

mongodb - 如何使用 Mongodb 中另一个表的 _id 更新一个表

angularjs - 选择至少一个复选框验证

node.js - 没有代码签名就无法构建 Electron 应用程序

javascript - 如何使用express中间件来处理所有路由?

javascript - Jade 不再接受没有 JavaScript 描述的内联变量?