MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBで類似した配列を持つドキュメントを検索し、類似性の値で並べ替えます


ドキュメントを使用してコレクションを作成しましょう-

> db.demo123.insertOne({"ListOfSubject":['MySQL', 'MongoDB', 'Java']});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2f24ac140daf4c2a3544b8")
}
> db.demo123.insertOne({"ListOfSubject":['Python', 'MongoDB', 'C']});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2f24cd140daf4c2a3544b9")
}
> db.demo123.insertOne({"ListOfSubject":['MySQL', 'MongoDB', 'C++']});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2f24ce140daf4c2a3544ba")
}

find()メソッドを使用してコレクションからすべてのドキュメントを表示する-

> db.demo123.find();

これにより、次の出力が生成されます-

{ "_id" : ObjectId("5e2f24ac140daf4c2a3544b8"), "ListOfSubject" : [ "MySQL", "MongoDB", "Java" ] }
{ "_id" : ObjectId("5e2f24cd140daf4c2a3544b9"), "ListOfSubject" : [ "Python", "MongoDB", "C" ] }
{ "_id" : ObjectId("5e2f24ce140daf4c2a3544ba"), "ListOfSubject" : [ "MySQL", "MongoDB", "C++" ] }

以下は、類似した配列を持つドキュメントを検索して並べ替えるクエリです-

> var subjects = ['MySQL', 'MongoDB', 'Java'];
> db.demo123.aggregate([
...    {$unwind: "$ListOfSubject"},
...    {$match: {ListOfSubject:{ $in:subjects}}},
...    {$group: {_id: "$_id", number: {$sum: 1}}},
...    {$project: {_id: 1, number: 1, percentage: {$divide: ["$number",subjects.length]}}},
...    {$sort: {percentage: -1}}
... ]);

これにより、次の出力が生成されます-

{ "_id" : ObjectId("5e2f24ac140daf4c2a3544b8"), "number" : 3, "percentage" : 1 }
{ "_id" : ObjectId("5e2f24ce140daf4c2a3544ba"), "number" : 2, "percentage" : 0.6666666666666666 }
{ "_id" : ObjectId("5e2f24cd140daf4c2a3544b9"), "number" : 1, "percentage" : 0.3333333333333333 }

  1. MongoDBでforループを使用して値をプッシュする方法は?

    値をプッシュするには、forループとともにsave()を使用します。ドキュメントを使用してコレクションを作成しましょう- > for(var v=1; v<7; v++) { ... db.demo739.save({Name:"Chris",SubjectName:"MongoDB"}); ... } WriteResult({ "nInserted" : 1 }) find()メソッドを使用してコレクションからすべてのドキュメントを表示する- > db.demo739.find(); これにより、次の出力が生

  2. MongoDBを使用して、特定のネストされたドキュメントのオブジェクトの配列をクエリしますか?

    ネストされたドキュメントのオブジェクトの配列をクエリするには、find()を使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo763.insertOne( ...    { ...       _id:1, ...       CountryName:"US", ...       "studentInformation": [ ...          {