MongoDBの配列からの一意のアイテムを組み合わせますか?
配列からの一意のアイテムを組み合わせるには、MongoDBでaggregate()を使用します。ドキュメントを使用してコレクションを作成しましょう-
> db.demo420.insert(
... {
...
... "details" : [
... {
... "Value1":10,
... "Value2":20,
... "Value3":30
... }
... ]
... }
... )
WriteResult({ "nInserted" : 1 })
> db.demo420.insert(
... {
...
... "Info" : [
... {
... "Value1":10,
... "Value2":20,
... "Value3":300
... }
... ]
... }
... )
WriteResult({ "nInserted" : 1 }) find()メソッドを使用してコレクションからすべてのドキュメントを表示する-
> db.demo420.find();
これにより、次の出力が生成されます-
{ "_id" : ObjectId("5e739a569822da45b30346dc"), "details" : [ { "Value1" : 10, "Value2" : 20, "Value3" : 30 } ] }
{ "_id" : ObjectId("5e739a569822da45b30346dd"), "Info" : [ { "Value1" : 10, "Value2" : 20, "Value3" : 300 } ] } 以下は、配列からの一意のアイテムを組み合わせるためのクエリです-
> db.demo420.aggregate([
... { "$project": {
... "_id": 0,
... "unique": {
... "$filter": {
... "input": {
... "$setDifference": [
... { "$concatArrays": [
... "$Info.Value1",
... "$Info.Value2",
... "$Info.Value3"
...
... ]},
... []
... ]
... },
... "cond": { "$ne": [ "$$this", "" ] }
... }
... }
... }},
... { "$unwind": "$unique" },
... { "$group": {
... "_id": null,
... "uniqueArray": { "$addToSet": "$unique" }
... }}
... ]) これにより、次の出力が生成されます-
{ "_id" : null, "uniqueArray" : [ 300, 20, 10 ] } -
1つのMongoDBドキュメントの2つの配列内で一意の値を取得する
ドキュメント内の2つの配列内で一意の値を取得するには、aggregate()で$setUnionを使用します。 $ setUnionは、2つ以上の配列を受け取り、任意の入力配列に表示される要素を含む配列を返します。 ドキュメントを使用してコレクションを作成しましょう- >db.demo608.insertOne({"ListOfName1":["John","Chris","Bob","David"],"ListOfName2":["Bob", &
-
C++の2つのアレイからの一意のペアの最大化
問題の説明 サイズNが等しい2つの配列が与えられた場合、それらの要素を使用して最大数のペアを形成します。1つは最初の配列から、2つ目は2番目の配列から、各配列の要素が最大1回使用され、選択されたものの絶対差が使用されます。ペアを形成するために使用される要素は、特定の要素K以下です。 例 入力が-の場合 arr1 [] ={3、4、5、2、1} arr2 [] ={6、5、4、7、15} k =3の場合、絶対差が3 −以下の次の4つのペアを形成できます。 (1、4)、(2、5)、(3、6)、(4、7) アルゴリズム この問題を解決するために再帰的アプローチを使用できます 両方