首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >猫鼬(MongodDB)在ObjectId数组中查找ObjectId

猫鼬(MongodDB)在ObjectId数组中查找ObjectId
EN

Stack Overflow用户
提问于 2020-09-27 10:11:05
回答 2查看 59关注 0票数 1

我使用nodejs、mongodb (所以mongodb作为数据库)和javascript。

我有一个名为A的集合,下面是一些例子:

代码语言:javascript
复制
{
   "item": "Kitchen",
   "location": "New York",
   "ids" : [ ObjectId("5f6dce24021e15a1121a649a"), ObjectId("5f6dce24021e15a1121a649b"), ObjectId("5f6dce24021e15a112a649c")]
}
{
   "item": "Bathroom",
   "location": "New York",
   "ids" : [ObjectId("5f6dce24021e15a112a649c")]
}
{
   "item": "Living Room",
   "location": "New York",
   "ids" : [ ObjectId("5f6dce24021e15a1121a649a"), ObjectId("5f6dce24021e15a1121a649b")]
}

is是对另一个集合的引用,我将将其命名为B。在集合B中的一个例子是:

代码语言:javascript
复制
{
  "_id" : ObjectId("5f6dce24021e15a1121a649a"),
  "name" : "George",
  "Age": 12,
  "Nationality": "English"
}

我希望能够在集合A中找到ids数组中有ObjectId("5f6dce24021e15a1121a649a")的所有项。

例外结果:["Kitchen", "Living Room"]

有人知道我怎么处理吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-27 10:28:04

你可以使用合计()方法,

  • $match数组中的ids搜索id
  • $group items数组中的所有项
代码语言:javascript
复制
db.A.aggregate([
  { $match: { ids: ObjectId("5f6dce24021e15a1121a649a") } },
  {
    $group: {
      _id: null,
      items: { $push: "$item" }
    }
  }
])

游乐场

你可以使用查找()方法,

代码语言:javascript
复制
let result = await db.A.find(
  { ids: ObjectId("5f6dce24021e15a1121a649a") },
  { _id: 0, item: 1 }
);
let items = result.map(obj => obj.item);
console.log(items);

游乐场

票数 1
EN

Stack Overflow用户

发布于 2020-09-27 11:04:22

Mongo允许您以查询无数组字段的方式查询数组.

它还有一个内置的不同的函数,用于从查询中获取唯一值。

代码语言:javascript
复制
db.collection.distinct("item", {ids: ObjectId("5f6dce24021e15a1121a649a")})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64087261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档