Số lần xuất hiện mongodb trong mảng

Mỗi hoạt động có một mảng được gọi là các phần và mỗi phần tử của mảng đó có một thể hiện và một Loại thành phần

Tôi muốn có thể đếm tất cả các hoạt động trong đó một trong các thành phần trong mảng phần có loại thành phần là "Trường hợp nhúng" và một thể hiện bằng objectId mà tôi sẽ chỉ định

Địa chỉ email ẩn danh cho nhóm này hoặc bạn cần có quyền xem địa chỉ email thành viên để xem thư gốc

để mongod. @nhóm Google. com

Nếu tôi có một loạt tài liệu trong đó mỗi tài liệu có id danh mục, tôi có thể lấy tài liệu cho mỗi danh mục với

db. các tài liệu. tổng hợp([{$project. {Thể loại ID. 1, _id. 0}}, {$nhóm. {_Tôi. "$category_id", bài đăng. { $sum. 1 }}}]);

Có cách nào để lấy số lượng danh mục duy nhất mà không cần lấy toàn bộ bộ trả về và đếm số lượng tài liệu (và điều đó thậm chí có thể thực hiện được với vỏ mongo) không?

Làm cách nào để tôi cấu trúc truy vấn MongooseJS/MongoDB của mình để nhận tổng số lần trùng lặp/lần xuất hiện của một giá trị trường cụ thể? . Tổng số tài liệu có custID của some value cho tất cả các ID giám sát

Tôi có thể làm điều này bằng tay trong dòng lệnh

db.tapwiser.find({"custID" : "12345"}, {}, {}).count();

đầu ra. 1

> db.demo184.find();
0

đầu ra. 4


Tôi tìm thấy tài nguyên này

Cách tính tổng các giá trị riêng biệt của một trường trong bộ sưu tập MongoDB (sử dụng cầy mangut)

Nhưng nó yêu cầu tôi chỉ định các trường duy nhất mà tôi muốn tính tổng

Trong trường hợp này, tôi muốn lặp qua tất cả các tài liệu, tính tổng số lần xuất hiện của từng tài liệu

- stackoverflow. com

ghi bàn. 9

câu trả lời được chấp nhận

Tất cả những gì bạn cần làm là tài liệu của bạn trước ngày _______ 7 và sử dụng toán tử tích lũy để trả về "số lượng" cho mỗi nhóm

Để đếm, bạn cũng có thể sử dụng tính năng tổng hợp () cùng với $sum. Hãy để chúng tôi tạo một bộ sưu tập với các tài liệu -

> db.demo184.insertOne({"Names":["Chris","David","Bob"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3999fb9e4f06af55199805")
}
> db.demo184.insertOne({"Names":["Chris","Mike"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e399a0d9e4f06af55199806")
}
> db.demo184.insertOne({"Names":["Chris","Bob","Carol"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e399a209e4f06af55199807")
}

Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find() -

> db.demo184.find();

Điều này sẽ tạo ra đầu ra sau -

{ "_id" : ObjectId("5e3999fb9e4f06af55199805"), "Names" : [ "Chris", "David", "Bob" ] }
{ "_id" : ObjectId("5e399a0d9e4f06af55199806"), "Names" : [ "Chris", "Mike" ] }
{ "_id" : ObjectId("5e399a209e4f06af55199807"), "Names" : [ "Chris", "Bob", "Carol" ] }

Sau đây là truy vấn để đếm tần suất của mọi phần tử -

> db.demo184.aggregate([
..   { "$unwind" : "$Names" },
..   { "$group": { "_id": "$Names", "count": { "$sum": 1} } },
..   { "$group": {
..      "_id": null,
..         "counts": {
..            "$push": {
..               "k": "$_id",
..               "v": "$count"
..            }
..         }
..      } },
..      { "$replaceRoot": {
..         "newRoot": { "$arrayToObject": "$counts" }
..   } }
...])

Điều này sẽ tạo ra đầu ra sau -

{ "Carol" : 1, "David" : 1, "Chris" : 3, "Bob" : 2, "Mike" : 1 }

Số lần xuất hiện mongodb trong mảng


Số lần xuất hiện mongodb trong mảng

Tôi cần trợ giúp trong việc đếm số lần xuất hiện chuỗi bên trong một mảng và chiếu chúng bên trong tập hợp dữ liệu của tôi

Việc tổng hợp có một vài bước tổng hợp nhưng sau giai đoạn

> db.demo184.find();
2 cuối cùng, các tài liệu trông như thế này

{
  id: 'Dynamic Ad Campaign',
  requestcount: 50,
  bookingcount: 5,
  flags: ['a', 'bk', 'yz', 'a', 'a', 'bk'],
  regions: [
    ObjectId("606467245ed47a479bac6df7"),
    ObjectId("606467245ed47a479bac6df7"),
    ObjectId("606467245ed47a479bac6df8"),
    ObjectId("606467245ed47a479bac6df9")
  ]
}

Và điều tôi muốn là đếm số lần xuất hiện của các mục bên trong

> db.demo184.find();
3 và
> db.demo184.find();
4 và chiếu trường này thành một trường mới. Vì vậy, đầu ra sẽ trông như thế này

{
  id: 'Dynamic Ad Campaign',
  requestcount: 50,
  bookingcount: 5,
  flags: [
    { name: 'a', count: 3 },
    { name: 'bk', count: 2 },
    { name: 'yz', count: 1 }
  ],
  regions: [
    {
      _id: ObjectId("606467245ed47a479bac6df7"),
      count: 2
    },
    {
      _id: ObjectId("606467245ed47a479bac6df8"),
      count: 1
    },
    {
      _id: ObjectId("606467245ed47a479bac6df9"),
      count: 1
    }
  ]
}

Tôi thực sự không biết làm thế nào tôi có thể làm điều này trong quá trình tổng hợp. Thật dễ dàng để đạt được điều này trong nút với mảng được trả về từ tập hợp, nhưng tôi thích làm điều này bên trong truy vấn hơn. Bất kỳ đầu vào?