0

私は2つのコレクションAとBを持っています。

{
  "_id" : ObjectId("4fb2143af31dfd122ce39c4b"),
  "Name" : "Freelander 2.2D",
  "Manufacture" : "Landrover"
}

と B 、

{
  "_id" : ObjectId("4fb21439f31dfd122ce39c4a")      
  "Name" : "Rangerover",
  "Manufacture" :  "Landrover",

}

C#ドライバーのAとBのフィールド値を同じにチェックする方法を教えてください(ここでは「名前」に異なる値があります).違いが見つかった場合は、私も更新する必要があります

これについていくつかの光を当ててください、事前に感謝します

4

2 に答える 2

1

複数のコレクションを含むクエリを実行することはできません。1 つのクエリ - 1 つのコレクション、期間。

于 2012-05-18T12:49:35.137 に答える
0

まあ、Sergio はほとんど正しいですが (言語ドライバーを使用してこれを行う方法がわかりません)、シェルを使用することは可能です。

var a_in_b = function(o){ 
   var numB = db.B.find({Name:o.Name}).count();
   if (numB > 0) print (o.Name + " is in both A and B");
} 

> db.A.find()
{ "_id" : ObjectId("4fb2143af31dfd122ce39c4b"), "Name" : "Freelander 2.2D", "Manufacture" : "Landrover" }
> db.B.find()
{ "_id" : ObjectId("4fb667d60569d84fec6ef57e"), "Name" : "Rangerover", "Manufacture" : "Landrover" }
{ "_id" : ObjectId("4fb66a830569d84fec6ef57f"), "Name" : "Freelander 2.2D", "Manufacture" : "Landrover" }
> db.A.find().forEach(a_in_b);
Freelander 2.2D is in both A and B

要件が管理者関連のものである場合、これが探しているものかもしれません。C# ドライバーからこれを実行したい場合 (SQL 結合のように)、できません。

于 2012-05-18T15:32:18.820 に答える